{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "#导入tensorflow和mnist数据集包\n",
    "import tensorflow as tf\n",
    "from tensorflow.examples.tutorials.mnist import input_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracting mnist_data/train-images-idx3-ubyte.gz\n",
      "Extracting mnist_data/train-labels-idx1-ubyte.gz\n",
      "Extracting mnist_data/t10k-images-idx3-ubyte.gz\n",
      "Extracting mnist_data/t10k-labels-idx1-ubyte.gz\n",
      "Extracting mnist_data/train-images-idx3-ubyte.gz\n",
      "Extracting mnist_data/train-labels-idx1-ubyte.gz\n",
      "Extracting mnist_data/t10k-images-idx3-ubyte.gz\n",
      "Extracting mnist_data/t10k-labels-idx1-ubyte.gz\n"
     ]
    }
   ],
   "source": [
    "mnist=input_data.read_data_sets(\"mnist_data/\",one_hot=True)\n",
    "mnist2=input_data.read_data_sets(\"mnist_data/\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[[0. 0. 0. 0. 0. 0. 0. 1. 0. 0.]\n",
      " [0. 0. 0. 1. 0. 0. 0. 0. 0. 0.]]\n"
     ]
    }
   ],
   "source": [
    "print(mnist.train.labels[:2])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "train image shape:： (55000, 784)\n",
      "train lables shape: (55000, 10)\n",
      "val image shape: (5000, 784)\n",
      "val lables shape: (5000, 10)\n",
      "test image shape: (10000, 784)\n",
      "test lables shape: (10000, 10)\n"
     ]
    }
   ],
   "source": [
    "#输出训练集、验证集和测试集的shape\n",
    "print('train image shape:：',mnist.train.images.shape)\n",
    "print('train lables shape:',mnist.train.labels.shape)\n",
    "\n",
    "print('val image shape:',mnist.validation.images.shape)\n",
    "print('val lables shape:',mnist.validation.labels.shape)\n",
    "\n",
    "print('test image shape:',mnist.test.images.shape)\n",
    "print('test lables shape:',mnist.test.labels.shape)\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "可以看到images里面有数量不等的图片，每张图片是28x28长度的一个一维向量， 所以用的时候需要先给它还原成28x28的二维图片。labels中则是图片对应的数字的值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsMAAAJ1CAYAAAA8H/0qAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvhp/UCwAAIABJREFUeJzs3Xec1MX9x/H33B2doytKr0ezoMauEQU7Gg32ghoUBRvRWKLxZ4xJTEws2EWNsdcEFRtW7FFEFEGKCqh0Aentyvz+mN2Zld077ri929v9vp6Pxz1u+Hy/uzd+/e7u7Mx8Zoy1VgAAAEAU5WW6AgAAAECm0BgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk5XRj2BhjjTFrjTF/qeT5w4wxa2KP61HT9ctGXNOasRXX9brY+dYYU1DT9ctG3Ks1g+uafltxTQfFrmmZMWZQTdcvW3Gvpl+uflbldGM4Zmdr7dWSZIzZP3ajJ/5YY8wQSbLWPmCtbZrZ6maFxGvaxhjzgTFmmTFmhTHmI2PMvvETuaZV4q9rImPMGbH79Ox4zFp7raR+tVq77PSza2qMyTfG/NkYs8AYs9oYM9kY00LiXq2iza/rGGPMzFjj7MzEE7mulbb5NT3IGPOZMWaVMWa2MWZ4/Ji19o3YNf0+IzXNLtyr6bf5Ne1vjJlkjFkX+90/fixbPqui0Bj2rLXvWWubxn8kDZa0RtKrGa5aNlsj6TeStpHUUtLfJY2ry98As4kxpqWk30ualum65IjrJO0jaW9JzSSdLmlDRmuUG76QNFLSZ5muSC4wxtSTNFbSvZKaSzpR0s3GmJ0zWrHcwL2aRsaY+pKel/SoXBvgIUnPx+JZI1KN4RTOkPSstXZtpiuSray1G6y1M621ZZKMpFK5F0SrzNYsZ9wg6TZJSzNdkWwX+2IxStI51trvrDPVWktjuJqstXdaa98UXyzSpZXcl7VHYvfpREnTJfXNbLWyH/dq2g2QVCDpVmvtRmvtbXJtgYMyWqsqimxj2BjTWNJxct9iUE3GmClyby4vSLrfWrskw1XKesaYPST9QtI9ma5LjthRUomk44wxi4wxs4wx52e6UsDmrLWLJT0h6azY1J69JXWW9H5mawYk6SdpirXWJsSmKAumRiSK8lD2ELnetncyXZFcYK3dyRjTUNKxkrJqeKQuMsbkS7pL0oXW2jJjTKarlAs6yA05F0nqKqmnpDeNMbOsta9ntGZAsick3S9pdOzfI6y1P2SwPkAqTSWt3Cy2UlJhBuqy1SLbMyw3ReLhzb7NoBpiUyaekHQlc9uqbaTct+2PMl2RHLI+9vtP1tr11topkp6UdEQG6wQkMcb0lvSUpKFynQv9JF1ujDkyoxUDkq2Rm9KTqJmk1Rmoy1aLZGPYGNNRbp7LwxmuSq6qJ6lbpiuR5QZKOjY2nL9ILunrJmPMHRmuVzabEvvNF2DUdTtImmmtHW+tLbPWzpT0kqTDM1wvYHPTJO1kfj58uZOyLOk7ko1huQzyD62132a6ItnOGLOXMWY/Y0x9Y0wjY8wVktpK+jjTdctyZ0rqI6l/7OdTuZUQkpZeQ+XEXu/vSbraGNPAGNNHLkv/xczWLPvFXv8N5RJn6hljGhpjovr5kg6TJfWMLa9mjDHd5VY/+iLD9cp63KtpN0Eucf6i2PvqBbH4W5mrUtVF9QYYKhLn0qWBpDslLZM0X27I+Uhr7YKM1irLWWtXWGsXxX8kbZK0ylq7+dwsVM3JcolIy+R62q6JZZajel6Tm4ayj6QxsfIvM1qjLBb74vYbuZVkVsnltvxH0gOZrFeO4F5NI2vtJknHyLWrVsjdt8fE4lkj1xvDGyVNMsZcnxi01va21ia9qRhjzjLGrIg9rqyW6phtfnZNrbXvWGt3ttYWWmtbWWsPsNa+Gz+Za1ppKe/VOGvtAGvt/fF/G2Oulesl2iiG/cuTdE2ttfOttYfF1hrvZq29N36Me7XSUl3XAdZas9nPBInrWkmprunT1todYu+tHay1V8SWsJQxZmDsmraV65VDatyr6Zfqmk621u5mrW1krd3VWjs5fixbPqsM+WMAAACIqlzvGQYAAADKRWMYAAAAkUVjGAAAAJFVqzvQHZx3PBOUK/B62TNV3maMa1qxrbmmEtd1S7hX0497tWZwr6Yf92rN4F5Nv8peU3qGAQAAEFk0hgEAABBZNIYBAAAQWTSGAQAAEFk0hgEAABBZNIYBAAAQWbW6tBoA1El5+ZKkWfft4kPTDr1LknTUGSN8rODNSbVbLwBAjaNnGAAAAJFFzzCASCro3NGXZ93QWpI0Z8D9CWfUlySt6F7fR9q8WStVy2pzntzJl9/f925J0ilDL/Sx/Lc/q/U6AVvy7U17SZIuPuwVH3v55L0lSWVTZmSkTlljr/Can3Nx2ONi1gEPSZJ6TDjTx7qf8nmtVasq6BkGAABAZNEYBgAAQGQxTQLVlt+3yJdnjGjpy1//2g2RlilsnZ4nN4Ry14quPvbQzUdIklo/8FGN1hMo6NbFl7+6uo0v/3x6hHPOD/tKktq+t9THSmuuajnDft/El1vv30iStLxXAx/b5u1ar1JO2Xjk7pKk5ees8bHJuz9W7vnnzdvfl99/ZWdf7nbvbElSycJF6a5i1iho386X7/jVg5Kkgxut97GH9ox9Nk2p3Xpli0Wj9pEk/fWCf/nYIY3W+nJx7KN/9B5P+tht6p30PIsvdM/T7vEwHaV02fK01nVL6BkGAABAZNEzjCop6NjBl7+6djtJ0hMH3etjuzQo8+Wy2HetMoVY/PvX8Bbf+Ei7K1yvxr/Ghx6Mknnz01fpOiyvYUNJUqd3Q9LBXe0/kCTlm/Bddfqmdb586aFDJUmlM8M1RMVMPZcEN/2PrXxszqDk3uBub/zGl3sN/0qSVLbh6xquXW5pMs8kxbY78TtfLr2nNmuTveL3rCTNujks+ffSUbdIknrUC73tie+wm7unw3vhvHPe9eX+O7r3kQ5Dotsz/O25nX05sUcYyUwDd7/9dMKuPvbu726SJDU29VM+piLzfr+PL088/1ZJ0tPnh/bFbbcO8eVt7qn5UWN6hgEAABBZNIYBAAAQWTk9TWLhJaEb3sQmcjdcFpK5fkqYx739Ry41puG4T2qlbtlm9o1uvcUZp97pY/HEuHhSnIuF71cvrWsuSfpkTbek59utyVxfHtJ0lSRpwfipPvZiv5abPyRnxKdGSNL8J10i4YvtkxNgBkw9xpfNTSHZq8G3VVunsaBLJ18umft9lR6bK2be4RKH5gy6L+Xx+DqYPYeGNXArGnpG1awvqefLVR9QjaaZt/f35VlH3eXLeXLvH4mJyakM/2GAJOn+ju+kPH5bf5fUdFPrA3ystpOWMq3jvvMyXYWsMfuPbnrEtKF3JEQrfjXfs8J99t/7yJE+1l4fSpI2tg7vsPWM2wH01MKFPrb7lTf78um6RFLNTpegZxgAAACRRWMYAAAAkVWnpkksOd9Na1ixU7GPjT3kjvJO36I+9ScmxTbYEl9untco/O3T3dp4C24Ll+TmRQdLkpad0MzHSn6I5rDK8Qe7FQ4Sh+bCKhHhO9WdK7r78uuH9pOUemWID446yZePvsetR5y4wsSL2r36la6jvvljyAyfsfudScd7vnm2JKnXiJk+VrZ2ri9XPDgazBrjruHzh9zuYyf++xJf7vTHDyv5TNnpm1v3CuXB8WHmcK92ez2sHFE0fJqkyl9blK/ZkQuTYiv/E9Zz3UbfJR2PusSVI+LTI6YNTvzsy/elhaVuZZlfjv2dj3Ubu0mS1ODrsDJE6dJlkqRdnjrVxybt/qgvf7a+iyTJbgqft1GwYfAevjy62+0JR+olnxxx8RUkJKlJ358q9ZhX1hX68n8uP0SS1P6lqn/WFCW8Jp78/T8lSYfuMiocPze5fVcd9AwDAAAgsjLeMzzrvtADOOOI0ZKkBibxG1oDpdPPnzvYNr9J7HeIPdzZrcl42lMDfOynU1wyUiQSkfbY0RfPa+16b19at52PxRPjpq4KvT4bL9vGl7+90V3Mousb+1jpdLdma2KiYr173XnFCd1y868IyY/t/54bPZh2b5fE9e4p/0iIumvzfUlYR7homEskLCveVOW/UTxoN18ee7DrWepXL1opS5sOc+8pY4+51cfyjUs6iifKSVLPs77wZVvG3nLVUTogrD06rl8Y7fh8k3ttt30sJMeSmJhs4fm/8OVZR8V7K8OH0QMrQxLsf89xI5Y9P/hf0vOUJEWkjRtTf+aNm7+TJKnR6jlVrG12W986XNcd69MbnIopcE3Db/8UXtdf/aL8Ufp4sqYkLRkSeoYbzC+/97bLS+HzbafOZ0qSJu39gI/Fk+okqWuBe/9uNqPm/n/RMwwAAIDIojEMAACAyMr4NIm7D3zYl+NTGP6+rKePLdlUmPSYVP47KQwPdxqXvB3olswb6L4X3HjE4z4WX//20S4TfOy0xwdIkn46MWwbmLNJdZ986YvDh4yQJOUvDOtQhsS4kLQx/4qwpvD0A9xw3+H3neNj+dPd72XD9vaxYjtJ0s+3be78WEiySTX0l40WX+GGhbbND9NG1lsXGzrqUh9rXPzxVv+NNb9d5cvxIcA1dqOPdX1mmS/n6sSA1le7Yd+d6of1nA+efpQkqejacH1KmRqRNqUNQr9KUxOmthVbN/epbPXqWq9TNhkx/Hlfjq/bfsOyvj720dFFvmzmlr/OeH6zkOw97+wdJEmX7/RfH5u8KbzHNjo0WtMjKuuDjeFeLvwhVz59qmbjIJfk/dVpFS9gcPGCfSVJi48M0xdKly2o1N/Ifzus6d7pbfd77MztfeyEpksq9TzpQs8wAAAAIivjPcO3nnicL/+hv/tWu+1zYUmpyu6IU6TqLbPRY5z7ff+/jvCxRU+65cTOb/GDj8V7iXsNH+FjXa7J0Z7hBHai6yXe0vfkhktDFtyYlV0kSfUXr/Gx2de5xLh/nx6WtIn3hExK+Eaeajm2bDe86P2k2LEzj5ckNR6b3BscT2KQJNOoUdLxRKU7uh75W/o8mHRswKSzfHnbaTMqV9ksdlH7N5Jiqx5yIzktvq65HYyibO6x9KtUR2lCv1R8+cqX/zrAxwrnJifLKS8kGJUe4JJzB9/xpo+d18J1tyXuEHrkzLCrpZR777GV0fu8aRUev3Xewb5c/9X0Lt9Vly2+KCStjxzxXLnnxXuDJWnOAe6+LVuX/TsX8g4GAACAyKIxDAAAgMjK+DQJOykMWbR2eVQZTewpmxKGkR+8ZbAk6fzr7k467/HTRvvyVdfskXQ8V63/VfhvXd7b3T6JUyNafxmmRAxvPleS1P/FkAy3R4NYQk1CstzE2PSIPwxLSLRTmFyfywrrbZAkrU2IFR/i1hxtdc1cH3uq22tbeKZ3kiLxRJBt/pbetbrropWnhd3mftnQJRjtO+XXPtbikRTDzEibwu1IkEu3xosqXmc8PjVCkl559L5yzzv2mzD1L29IWM88qumjI9u+nfCv5GT7ma+EBP4O+rEWapQ5eTv38eW/XRTW+B3YaF3SufG1hBOT5dI1PcLs4nar7VIv9ef+N8UuCbz57JpLaKRnGAAAAJGV8Z5hZJcFJ4beiukHuB7zxASNePJHYjzeG5wYS0yWO/3ZCyRJ3d7O7eSmMfe55b3O+11Yrubhbi5z87wPD/OxBzq761qQsAPV1jhz3HmSpJ4f5X6v6Iqj1ybF1r0Qdktsamen5w/Fk5ZYlg1p9PX6tuEfsRG1fz18mw/9bfEgX57wXQ9J0qt7hOOSS7BdWbbBR3Z/6beSpN6XhtHXsrXJrxP8XOfnQm9wrr/K938k9MSm6g1ONPE5tyNt+2Xp3xF25gi33GhiWyHR+LVumcFGz3+S8ng60DMMAACAyKIxDAAAgMhimsRm5l0V1tor26X8pJC2+WG6QMlBYfe7grcm1UzF6qCQBJeXIhbiibHhPxwkSfrh9yFJIdenR8St7VCWFGtk6kuSHur8VkLUDcVfuigkK748fndfLt7e3XvfHFJ+0owktfms6jsxZqvtW65KijValny9q2Lj4e6aLz0nDB/u0HahJGn1cfV9rGThIkVVXkO3y99+7VPvZnbfkgNipTUpj8OZfn7YbU7/cWuOb58f1hYf3e4DX85r54apy5S89viBt1/my0U3xs+DFNbR7VUvcZg/7FI5vzT2Oi/J9ckR0tJz3Q6wI1relBANidYLS9dLki75LqxL3em/iyWlb+pIQdfOvvzOYbfESqnX039/eY9YaWma/noyeoYBAAAQWTSGAQAAEFk5PU2ioFsXX/5m2PaSpLtOGlPhYwY0DNmV+ab87wodCpr68pgHw5rDIzvvV9VqZpV2T4Xh4ePbu9URdmi2wMfOax2GoNrnN46VwnX89ga3rmGjt2suK7SuKrrXZSn3KT6/wvN6POLWbiyb+a2PdS0JU0lm/23vch87cn7YKrPV427KTur83NxQsJ3Lwr+v12MJ0aapT65AfovmkqRjPvrax04sdNn6zfOSh+763XGqL3cYEuFpErHrdnu7V1Ief+f9HSRJ3ZX7K5psjY1Huqk4P5wU1k/NS7H2bSL/uWTDBIiB09ya2u1uTH+mfzbLb7utL+9yypeSpGZ5DVOeO2Ds7yRJPb/O/Xt1dWyGQtO81GvQ/3PJge68/ROnJaR3isLM87f35cQpQXE/JayMsmh0d0lSE6ZJAAAAAOmXMz3Da47f05d/3NW18f/06yd97KTCnyr5TFX/fjDojVG+XKRPq/z4bJK4zt/G593vSQnXbPjuI3x59fVuTcu3dnzKx/b7o/vW/cWkjj5WMm9+jdS1rimd5Xp6u175bcXnbeF5CtaV33P06f39fblNcQQSE+u53ZA6FVS9N3jJyJAse8y5EyRJw5svSDgjdTKHJG1TyHqtklTSpW2Fxzu9WlxLNan78nbqLUnabkx4v7u/472Sfr4+e6qEtysXhQTa/37idqi8++CHfOyBXo9Kkoae8Dsfa/p07vdwblGblr54f8dXkw6vSuh9LJxD32Dcq2+4e6yrauAzxLjPL7uFZfR/N+9wX27y7Mfpr8dm+L8PAACAyKIxDAAAgMjKymkSZpd+vtziDrfu58td7vaxihLfnlsbhlOnru+QdPzFGweE59nohq7O+NM4H/v5MKpTf1G9StS67inoGP77S36Yl5bntBO/9OWmsR2Gj3/nKB8b2+NlSdIOZ4dEw05/jMY0iXQxKeZRlMQmV7SctbGWa5NZdrVbC3zMynY+luo1mt+mtSTph9/08rEvR9211X935fqQhLNtBefluqVXb0iKHTHjaF+uP+ELSbmdxFmRpcNDsuv4a/4pSWr+swSu5ClPly7cS5L0ylu/8LGiW8I6zkUL3VS1fx4YkjhfedStOX7StSGR8cWnwxSBqCptUr/C418WN/bl7W4l+TBu+w9qbq3llae6Ka0zTrizwvM+/CCsvV0bCbj0DAMAACCysqZn+LvrQrLLNSeFhKxTC5dJkr4vCbtEzdjkvhFf+MTZPtZ4ofsGvv2EsDRH6Vezkv5O8xTfQL7+fUKSSKzXaU5x2FGpy/PZtbvS+l+5nc3iyWyS9OJ3obd9+2Omp/XvrfxnJ18uu8f1ERX3XJ/WvxElZ508Pil2/Deu9z1/wmdJx3JZ6YqVkqQn5oUEo+HNXWbnvleEpIvdr58tSTqh6ZvV+nvX/eh6K9pdFBLoSso7OQLu3iG+pF3IhlmwqpkvtytJz4hTNll90l6+HO8NlkKP8PTikFR4y6KDJUkzbw3vv82f+1yS1G1DSF5KdY/lv/OFL/d+2i3X+MXxt/rY2EMukCTVey23k7orUnjTwgqPj5icsESiptV0dbJG56tmSJIWj9vCiVtQ0KG9JOnr80Mb4OPT4rveJS/r9sTq0NYqejAselAbewLSMwwAAIDIojEMAACAyMqaaRItdl/iy/GpEZI08CuXrFF8+3Y+Fl8Lt0uKNfKq0t1edsAukqRjWjyQEHXfH5aXJUzM/+RL1XWJyXIn3uCSLD5d1cXH0j01Qgq7eh33tzCsv6XdlZBa/jbb+HLPBt8kHV96dxdJUqGiuRvahgfDbkYb/+GGof+x3eRqPWexde8Wfd8Z5mNFv3fvPSXf/VCt585mBV3CkGehcUlH+SY7k4hrwtKdwntcYrLc2LWtJEkPnnCkj5V9/pUkqTBhel6qdYZTyWsUnrvfrnMlSQ0S/j+UFUT3vTb+eVfU9PukY6fOHeTLnc8Oyba1MRSfLfZr4T5jnusZpvyUfj273PPz+/T05a/PaOPLtx73oCTpkEaJ67Kn3vVOkh46/1e+XDBtUqXrmw70DAMAACCysqZnuPWwkKTW45Kwy1n3y1zvb4GSvwFW109F7pv3vg2TvzMMn3qaL7dRciJeXfPdKaE3J55gdMvk8A25u6rXi+btsaMvHv7gu+7vtQg9mWWx71/1ZpW/uxeSrTywuy8f1dj1tK+xYRm1hkujvdNXs8dDz9rHf3a9Y79sWN7ZyUqt64/7xaen+Fj9Z10ibrdHKk5kipoN94dyUT13kePXT5KaPt1s84dEVuJI2BVvnyBJKvp8YrWeM75MYOOx4bmf6vZyrBTd3uBEi45wO5y+sO0LPhZfcvWnDWE5tbxNIUnL1HOjvbZ4U21UMaN63u8SC687IuxYeu02n/vyWc3cyFf+C+F1/eW65KVo4/o3eceXTy2sOGkx7oW1Yem/371xkiSp9/9CEmNlR0jShZ5hAAAARBaNYQAAAERW1kyTKFkYEoO6X1Y7SULLdk8eFJ2+ya1nXHhX81qpQ7q0f3u1L9e72K0JenH/t3zsgQtDUkfraW74veCt5Ans+X2LfHnBQDdRvumR4f/H2zv+25fjQ4RlCd+5il451/2+jt1+quKM615Iis0pDte13hu1m2yQbXq/f7okyUwt9LGut4UhOVvqBuW2XT2jdiuWRfKL3FSdS7sk34snzznYl5s9+XHS8ShpMyXst/dTWVhPfeIRbg3g3e8d5WN9/u87SVLp4pAgHlfQPuyquHbn9r48avQTkqQjG6/0sfiQ8p0rwnSqRu/N+NmxqItP5Xm5d8L9mzDDseezI93vi2t+t7NMK5k9V5I0/rawE+yo68J/dzzxc2izhN1hm239TrHrbJh6cudyNzXj3d+EteGLPnWLHmTyXqVnGAAAAJFFYxgAAACRlTXTJGrLoVNX+fLYFnfGSmFN4TOmnSFJavlK9TKCa13CWsj7Tvm1JOmtHcO21uddebsvl8UGK65bslvS0xzd/Alf3qWBOy8v4TtV2c8GOly817Pn+0jff7gsVbLyq6Z1fvKW3/9ceGjCv1bUXmWyRN+7R/pylxvcMJwtCXce64pWzab2bmrYwEYbk47NeqqXL7e10Z4CVfhkGG7+ZY/LfPmLEe49dtbge3xs2iHufhz19YlJz/NYn8d8OXG94jD9LLh0oVsPdsaFfX3MrP5CUdVwubs635aEaSrdC5JXMFqfMHzfeGH0+gZb/SuslPN/Iwb68nnbTJAk9alXvfXD49N2Hhl9uI+1GRP/m1Or9dzpFr3/+wAAAEAMPcObOa7ZFF9unNdUkjSrOOye0viOFrVep3RrcY77NnzdC6Hn969tw393cSz/4/ptw7qDZXLBxHUz44lxi0vDt++7lu3jy6/dsa8kqecDrNNaEzaV5We6CnXSX7q5BI2OCj2UtryTUS3nzdtfktTuiZk+Ro970GpGuBr3rOgmSerbcJ6PDWjo3k9f7/efFI9OvVD2PSs7S5JueWmwj/W8xq0TbzZEtzc4UdNnXBLnCduFnvnPf3+XJOnPS3v72H/GHOTL7e+I9ojGt7tv8OUre5zsYmeGnX0PPexTSdJN24eRj34PXyBJMuW86Ls/7nbsbPNV8m7AdQ09wwAAAIgsGsMAAACILKZJxCwZ6Yb32+aHxLg5xS5p6eS/hqGWNq/U/e7+LSn5wQ3TfXFURx/r8ffkZLnpA8K+q7+c4rYS/XF58larPW4Nkx/sxJCo11rZf63qsvu6vOjLu930W0lS90tzf41MZEb+259Jko5ov2tCdO1mv5GoybNhzeUXY9t7v9plZx8b8bfkaXc37PqcJOnD1T18bNz4PX2561XufbV7wvsrawmn1vb2MPXh0Nv7Jx3fVtGeGlGe0m/mSJK6/GGOj838g/s9WKGt0HULn/HZNGWKnmEAAABEVqR7hk2DBr485Dy3G9vqsrDUyhGfjJAkdbo3N3s4S+aFHWW6n5q8u0ziN8Bm+jb2OxnJSTXv6idP9eXeQ292v+uF+1dlZvOHAKiDSuZ+78tdT/o+6fgYdYuVQn/vlnrgAFQPPcMAAACILBrDAAAAiKxIT5NQWRjgf2TcgZKkV74Y4GOdniYZCXVD5/8Lw6SX/N/eSce7M4wKAMBWoWcYAAAAkRXpnmFbHJLlulxNzxoAAEDU0DMMAACAyKIxDAAAgMgy1rJKLAAAAKKJnmEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo2ZdHqrAAAgAElEQVRhAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARBaNYQAAAEQWjWEAAABEFo1hAAAARFZON4aNMdYYs9YY85dKnj/MGLMm9rgeNV2/bLQV13RQ7JqWGWMG1XT9stVWXNfrYudbY0xBTdcvG/H6rxlc1/TjmtYMrmv65exnlbU2Z38kWUk9NosdJWmqpDWSPpTUtzKP46fCa3qQpM8krZI0W9LwFI+bK2lQputfV3/Kua79JU2StC72u/9mx7vEHleQ6frXxZ/Nr6mkNpI+kLRM0gpJH0natzL/L/ip+PpIGiNppqQySWdW9nH8pL42kookPS/pR0nLJY2X1ItrWu3run/ssz/xx0oawnXdumsai2X9Z1VO9wxvzhjTU9Jjks6T1ELSOEkv1OlvK3WcMaaepLGS7pXUXNKJkm42xuyc0YplOWNMfbkPw0cltZT0kKTnY3FsnTWSfiNpG7lr+ndJ43j9p8UXkkbKfSlG9bWQ9IKkXpLaSvpE7v0A1WCtfc9a2zT+I2mw3PvCqxmuWtbKlc+qSDWGJR0q6T1r7fvW2hK5D8P2kg7IbLWyWitJzSQ9Yp2JkqZL6pvZamW9AZIKJN1qrd1orb1NkpHrhcdWsNZusNbOtNaWyV3LUrk371aZrVn2s9beaa19U9KGTNclF1hrP7HWPmCtXW6tLZZ0i6RexpjWma5bjjlD0rPW2rWZrkgWG6Ac+KyKWmPYxH42//cOmalO9rPWLpb0hKSzjDH5xpi9JXWW9H5ma5b1+kmaYmNjTDFTYnFUgzFmilyj7QVJ91trl2S4SsCW/FLSImvtskxXJFcYYxpLOk6uJxNbLyc+q6LWGH5d0gHGmAGxLvyrJNWX1Diz1cp6T0j6P0kbJb0n6Wpr7Q+ZrVLWaypp5WaxlZIKM1CXnGKt3UluNOMU8aUNdZwxpoOkOyVdkum65JghkpZKeifTFclyOfFZFanGsLV2htywyB2SFsol1HwlaV4m65XNjDG9JT0laajcF4t+ki43xhyZ0YplvzVyDbZEzSStzkBdck5sysQTkq5kfjvqKmPMNpJek3RX7H5F+pwh6eHNejRRdTnxWRWpxrAkWWuftdbuYK1tLelauSH9iRmuVjbbQdJMa+14a22ZtXampJckHZ7hemW7aZJ2MsYkTuvZKRZH+tST1C3TlQA2Z4xpKdcQfsFaW6llrFA5xpiOcnNdH85wVXJBTnxWRa4xbIzZLTa3dRu5FRDGxXqMsXUmS+ppjDnION3lMnS/yHC9st0EuQSvi4wxDYwxF8Tib2WuStnNGLOXMWY/Y0x9Y0wjY8wVcpn6H2e6btkudk0byuVg1DPGNDTGRO7zJV2MMc3kllP7wFp7Zabrk4NOl/ShtfbbTFckB0xQDnxWRfHNarTcGqMzY7/PyWx1slvszeQ3km6TW2f4HUn/kfRAJuuV7ay1myQdIzf9ZIXcNT4mFsfWaSA393KZpPmSjpB0pLV2QUZrlRtek7Re0j5yaw6vl0v6wtY5VtLuconJaxJ+OmW6YjliqEicS4tc+azK9cbwRkmTjDHXxwPW2v2stYXW2lbW2nMTl1QxxpxljFkRe1xZBuqbDVJd06djU08KrbUdrLVXxJavkjFmYOyatpX79ojUUl3Xydba3ay1jay1u1prJ8ePGWOulet93yi3mDmS/eyaWmvfsdbunPD6P8Ba+278ZF7/lZbqXh1grTWb/UyQuK6VtPm9+lDsGjZJXBfXWvu9xDWtgqR7VZKstb2ttUkdNlzXSsnJzyrD3HEAAABEVa73DAMAAADlojEMAACAyKIxDAAAgMgqqM0/dnDe8UxQrsDrZc+YLZ/1c1zTim3NNZW4rlvCvZp+3Ks1g3s1/bhXawb3avpV9prSMwwAAIDIojEMAACAyKIxDAAAgMiiMQwAAIDIojEMAACAyKIxDAAAgMiiMQwAAIDIojEMAACAyKrVTTeQWwo6d5QkrdizvY8tHLzJl0fs+o4kaVTLWT62w/tnSZLK5jbxsR7XfeFi69al/jvbbydJKlm4KB3VRo4rGbibJGlZvwY+tn5bty697bHWx67Y+TVfHtbc3VuvrguPuWzMMElSuxs/rLnK5oivH9rVl2cOus+XD7pgpCSp8diPa71OAGpffr9evjz3160lSb84YqqPPdz5XUlSsS2t8HkGnj/Clxs990k6q5gSPcMAAACILBrDAAAAiCymSaBKFly2jy9fffYTkqRjmy5JeW5e7LtWmcp8bMp+D7jCfuG8nTdcLEnqfG3q4egGT7nhlJJfbl2d6zTjtk1fMmJvHxpx4XOSpOHNF1T6acasbCdJeu7ovXysbO48SZIt3pTyMblk5Wnhv/utv90mSWpgwttbmWzSY/IUtqwvtu74wEZhqs77F90kSdon/1If63ADUyZSsuFaJr7e5w90v3uOre0K1V0FXTv78g/Huilmq4tKfKxX0XxJ0rheL/hY0Yvn+XKH8e59tdnkMG3MrnH3bemPP/qYKXD3/4KL9vCxkkahHp3+Ock9duPGrfwvAZxVp4T33yOvnODLY1t/mXRusU1uF6Ry962jffmymUMlSaXTv65ONStEzzAAAAAiKzI9w3k795EkzbwkfDU+vX9I6riwlZugPfCmy3xsu1vpBYrL71skKfQGS6l7hH8sDb0M35U0liSVqp6P/aK+66XMN6En6Yuz3TfA3Vdd7GPb3xSu/X6tvpUkjVezrf8PqEvy8n3xh6v3lCR9ed4dSadtTEgwWFASrmvD2KXbNr+xjw1r5nqBh0141sdG/9RDkvTm4B18rGTu99WpeZ216pg1vlzPuOub2Bv8fcl6SdLV845O+fiPZ3Rzj20SetHf3/duSdI+x3zhYz/c7BLs6E2rnO593OiGaRASE6N67RaNcqNqn152u49V1DuWeGTW4HtCfHDyY55avb0k6V+/PdbHFuzvPt6/PGN00vmSdNSEcyRJ5oPPt1BzIMhr2NCXv/3jLpKkaaeHz68t9fhWVlG9+r48/eKWLnZeeWdXHz3DAAAAiCwawwAAAIisnJwmER+SWzR8Nx/7+Eo3VLS6LAyD7vXk73z53f5uSPmA0yb62Mxba7SaWWXGlU0l/XxqRPxaHvjpOT7WdnQYQsmf8FnS8yw91yWKDR75ro9d1cYN05U2SDpdkvT+8u6x0o+pT8gy8y/b05dTT49wyTQ7Px6mjXS7/CNfzu/TU5I04/eFPjb1IDeMmpg0dnHLb1zhxfDcbwzo6sulS5dtTfXrpC7nzPflka+6TMupy7fzsZaxS1k669uUjy/S8qTYnvf8VpI066i7faz/pRdKkjr8lSlUlfFyb5cM+qumB/tYaYSmSeT3CK+3hy6+JVaq3Mfu2DXb+vKQpksrPPfEwoXu9/13+VhIYA4mbwz9X/krNyQdzxaLLwqJ3Kt+saHG/k69Bu69eOp+DyYdG9x+t6RYTotNbYxPjZCkL0+/LVaqer9q36cvTIp9dcLtKc6UbjjwGUnSg3sMDsFPkpPzqoOeYQAAAEQWjWEAAABEVs5Mk0jMcJxx606SpG+OCkPQt69wQ8vPXHeYj3V/OmHoucgNxU/p3t/H7FFuWKBgXcjqL3hzUjqrnTX+u398qDh8fxr5ncvMb3fsV5V+njb3umv+1pKw0PBVd1SczTzzVff/rkOWT5OIr/tZf9+Kpyfs8F83fNQzYWpEovhaiz2Hhtj+w908gBuvGONjAxoWS0qYLiHpzcIdw4NyaJpE6U8/+fLk+9xUnBbfhuH40lnJU3a2JH9tcl9BvyNmSpJW/rXKT4cIWnDE9r7cp37y/XTQlydKkppcn7xSTr2FK3z5gXYtfHlja5dlP/LGZ3ysvLXeJWnqprCqymWXjvTlxlOzd4vstXuF9cCnH3Bf0vFUa9xvSUWPSYw8uqpjpZ8z25XtH6ZEzB7ufn910G3lnO08uyZMT/vD+251k44vhHu/0fNu5a4e+p+PmV36ucIJqZ8zfn/f1q2JjxWmeYdmeoYBAAAQWVnfM5zX2K21Ov/xsKvPN7u7ZKKbf+rpY+MvPECS1PTt/ymVeGJN459W+diojyZIku5fFLY+W/lmGiqdhXas79YKTly7deIslxxSpKr3MBZODb28729wvfqtp5WkPDdhc6uslt+pgyRp4m5PJB27fUU3X+59j+vlLE06q3xtxrhe5LHn/MLHBrRL3bOc61rfX3P/3YPbuDWHH1OHGvsbyB37nZ48kriwdL0vL/6yrSQp//Dkx7b9NKyzuvgXYW3y/Qa5xKGKeoMTvbgqjHY2Hpu9vcGJeo6c48u/LnS9j3PO7ORjG1u6vlyTvPFkucrauITw6YPuTTrW++XQo97n8vhI209J5+WMWLJcvDdYkr46aEw5J0tHzQzrt5dds40vF33wafrrVkPoGQYAAEBk0RgGAABAZGXlNIn41AhJmnGT22o2PjVCkv65vJck6d2j+/pY/pzKJdD8cGaYWjGw0XhJ0vJtwmMfbuGS80pXrKxqtbPagVOHSJJe3+FpH3towP2SpL+of8rHpFIy0K3NuM31Yb3XbgXuWra5NAx9rX0+PKYqQ1112dwT2yXF1liX5PXkX0NiZ/OvUk/lqYzZZ3bx5Q/GuSHRfRuE9I+vh4c6dLvGrc1rS1JPT4mijYfv7stnHjwh6fhzS+IJJdmdzIna8dKnO/vyjUe9J0nqVNDUx6afkrzOuHdWKMa3GJekYr9Ne+jLWhqberH/M2Ht/AnH/1OSdFWbsB7rgBPO9+WmT2/9+0ym/ezzN1bueP28aj3nmhP2coVBIfZNsXtv7POPsA55YrJuLkm1zfKWkuU+3uimT9qDwjrvRvPLO71Oo2cYAAAAkZWVPcM/nhq+bX9z9J2SpJfWhW/b7/7KLdNRMmdulZ97U/PkbsjpG0JvWtR6hOOajnK3yt3Php7z4c1nSZJm3bWHj/X9+0JfXnyISzI66oJ3fGxoC7cTYLuCxO3mXPnhbuN8ZPARYXeakkbZ2zWc37qVL19xxtNJx59d7ZIQmz+Wnl6a0mkzffmM8S774Zujw6jJ9KF3+vKR/4mtzfbp1LT87WyT3ywsZ7X4ZPeece6oMCQxrJnraZpbEhKelv3D/f9qSM8wKqFoRFj/adfWwyRJX+77bx+r7NJfxQlvgS+sbSlJGj1noI/ljW4jSer+cngf2b/JJZKkGUeF1/yCg0NablHy21GkLRy8KSl23Ty341l5O1fmEtunuy+HneWS9XnzXF/uPsbdv3mqeHnUbEDPMAAAACKLxjAAAAAiK2umSRS0D1MVLr/scV+eX+p2ornh2rAOYLPZVR9yLujWRZI0+PDcWIcx3eK7nj0yOiyIOeJaF5vxqzAMp1+FYuodfRKnRzhXLHI7ho17N6yR2/vLkAxx7o1uh7vx1yTv0lTXmYSkhFMLK7cuaLo0mxF7eR+d+vjM81zdis6upQrVsrz+IYF2wQC3g9eqXiFZ8Jx9w/Sdy1q/neIZ3Fqbg16+xEeKxqV52yNERrfr3DD8gH7nb+HMirX4dJEkqdHsOQnROalP3syORT/48sYKzouirwe6hPCyhD7CSZ+4aYE9tmIt/Wwzf2BzX85L0U86dq2b8tfzjuIQ/OTLpPOqI/Hv/jxp1P2uyT0H6BkGAABAZGVNz3BZ69ArOKRJWNrkT0v3lCQ1e7xyvcGmIPwnzx8VEr+uPOcpSdJJTUmMSWX9r9y12v/cidV6nmHfHSxJ+vGSsFtQ3hS3o0+PdeH/YVQW+3r7p96x0oqM1iNbFWy/nSTpjHfCrnOHNnY9Z/UUenETexkqa7/fudGmoqeqd88DUkhubTqtes9T2ffGXkXJS1x9OaujLxdpUfUqkmPiu6smjmTmyrKe5SnoGHbSPOyU8B6aKrHzirdOlCQVfZL+0bF51yT/3cSk0TPmuvXuWr70lY9VZYfWyqBnGAAAAJFFYxgAAACRlTXTJMpzdLPJkqQXh1/sY/XWJY9tLD/SrRX64j53+Vj3gtDd/9xal2DT44XzfCy+PuvE5Z0TnmlB9SudJZaftbcvn3Dpa5KkUS1nJZxR8Xep+NB03zvDmsEd//JhrBSmBWxppc08U7m1OOui2Wd3qfD41CddkldbfVjheUjNtnTTp45tsjwhWj8tz+2HSMvSPSCXgxLGk8tLgkHNKx60my+P7zVGkvRRbJcwSep11zpfzvEZAJUSn/7nTEo6XtrKJYvNfjzssrpb5+8lSaO2fz2cp5DZdc6/LpAkdfxz3X9PX75/mCbx57Zjk44fPPUEX+5z+QxJ6ZueMPepnXz5X/3/XeG5397jphO2WPVRhedVBz3DAAAAiCwawwAAAIisrJkmUfZl2Ga26OmwpvCsE9y0h0+uvTPpMam8ur61Lx9z/298udONboikd69V4eTY+qxfTwzTJLpFYJpEQWeXcXzNVQ/52OGNV0v6ebbn8lK3UuXRU8J1fHiHf/tyj3puTeGCDdWrT5nN3u9sGzonb/GJNFroVn/Zc9IpPrTLti6L/r23dvSxRouTF6hc3zYMFP9pyJOSpCFNl/rYEVdNkCS9rAE+VvhkerbNzjkJC4Cmygif/tew1WvRuYlTWpAOeYWFkqS/jhnjY/EpKu+u6e1jdnI1l7Kog/LbbitJWr1PVx9b38p9ZuT9emnKx8Q91O/WhH8lr4E/45B7kmJx8ZWRJGnSq2FN8y43u62Js2Fy37Kj11V4/Id5ob1UtKpya1lX1uU7vebLv2iQPPli2PcH+nLrV92KUzU5YS17WxkAAABANWVNz7Bs6MXp8dvQO7PHDLebT9kRPyU9ZMWSQl/u8h/3u/6rYc3QjglJS/Fnt1Nm+Nifl+4gSTrt0LBT1YeXpyc5p67J79XDl28Y/6gkqVe9kPzyfYnrBT7i0ct8rMdd30mSWs0PSXWDHwm7K804yO3o0+rQhN70W2LPWYWkpAceP0yS1IEkM2ym9Cf3ut/m6PD6j+9d2FWVT7Z45Ha3XvntDzb2sbd2dGuPv3NOz3Di01W/fyGpfjb0k2WX/NatfHnN4273sF0aJPfK/+udA3ysp3Jjh9XiQ8JupYXXzJUkje12h4+l3v00lXoVHk21Lr73vym+2Cnhsymb7vSr+r/qy6l2nSsa9mna/+aqV9wo0dBmiQmLyX/7q3/18+XWP9Zc4lz5NQAAAAAigsYwAAAAIit7pkmUo829se7ze5OPbbsVz5c49LRLYzcdY9K6ruWdnjO+vrapL8enR7yxPkwz+eNfLpIkdXkwDFek2ha0x+mTfXnIO0dKksb3e8bH9hrp1oPe9o7KT3no8Nfcmh6xsDQkLTT7PnMbTzf5Jjen/GyNkoVua9qmh4XYpRP3kyS93Ps5H9vrHLeGqH/fATLkh2EhMe7THUYnHf/zUreOa59bFvtYrmxz/93hoekyvtt4SdJjq9v72IpSN93p+QU7+9iSt8PxuNuGhYbDwEZu6tPun53sY60Gx6cArlAuKk1ITt/ylJKqy2/hpu98c09YhGDaTg+W+/f6Ph32JOhxX+2+x9IzDAAAgMjK+p7hdLPtQ3/ykY3XSJIufi/sxFak9E8orwv+vde/kmL/uPh0X271UtW/pX37ajdXuCDEzh45TpL0wh2tUzwiGgrzQmLixmau3ChNz53fJyR7nXbO+ArP7fzQbEnZ0VuU37KlL9tNYbm6srVra+xvvvruLpKkW04KIxPHnv+2JOm9exvW2N8FNhdfOk2SFj/WTpL0n53/kXCGG+W57afQWzz+xv0lSc1n595ygC2mh6X8il52u8b2uSwkcpeuWClJqq/vfKxDQjnui1NCj+UvG36d9npGUeIuiG2vd9d0bKcHEs5I7oONj0L3ui8su1jbKcr0DAMAACCyaAwDAAAgspgmsZn5B7dKihUsrXgtwlyQr7COc3y9wQbLNlbrObv82w3DPzq0o4/t28jtJPNSmyIfK126rFp/py4rnJaQpHao+9XUhJ2O9r7YrXs9/eH0/L32/w5rOl/SMnnYr89DYR3obj9OTDpe1xR07CBJ6vv8fB978fkwbanTdelJrjQN3P+T7y8LQ3yXH/Fc0nmd6sd3tOqQlr+L3LZo1D6+XH+Qu3du6vu0j1W0u+Zf5h7py9d1DfdiWEs4OQH27RPD+rvNp+Xe9Ii4NmM+Sii73+kaVq/3aHIbIKqWnR3ea1vfX/5UyVkPhvfNzu3D5/l9nd6s1N+58JUzJEk9v8rcOtj0DAMAACCy6BnezMaWdssn5aBHl4UejF3avS9JmvvbcLzbDW7v9bLPv6r0c9oS9119ZWnY1atPfff9a8mxoWe49RaWUFl90l6SpMIns6+no+OTc8M/Lkk+vmNjt1/adG1Xrb8z+2/uG/zT7W9OiLrezvtWhp75Hrd848ulJXU/dW7lHm45pL+1fcHHrjr7A1/erY27SXvdv6pSzzf7+Ba+XNwyLO1z/aBnJUknNA09zXlySTqJCwDddf1xkqTmyr57EbVj9Yl7+fKnl92edLyeCQm0xba43OdJXNLv549xv1eWbfCxgf90O4NuNy23lqGsCfltQ5J8u3rJSXUFG7JpD7nquXHKIb48dL8Hk473HTbNlz/d3rURhp/0so+d3+JbSVI987mPFdvEPvrk/tb4vVz0UMis7/n7zC9VSc8wAAAAIovGMAAAACKLaRKQJL32xq7hH0PdNIkp+4W1ARc875Lpbloy0MdeeW+XCp9z7K9vlRR2tJOkyRvd969tHvvCx7Y0KHXcH16TJI1/stkWzqx7bMI6uKN/6iFJurhlmKpwcuH3kqS/PHyEj/X6p9uhrmzKjAqfe83xe/ry5NNukSQ1SkjOi0+PeGFImAJT+mN2raXZZP56SdKfl+7gY39oM9WXZ/76LklS3q/DuqNlsWTQ+DSHxFiiLR1fEtspcN/nL/WxomfdDovRnEyVzBS4j5AGTTZt4czoWHhwmH6Uapet4oSbp7K7fqV6zP8tCu/F7V/7UVLtr82ajVbvE3aUPbbpSwlHotc32GFMWBzgo93D5/SeDdz0nZ8lwJ2XnAwXv3u3dE8nrn993zg3NaPbHz/zsbrwfhq9//sAAABADI1hAAAARBbTJCqQb9x3hZbTtnBiDuhx67e+/PGJbugkPlQiSR0K3IbBN8VWmpCkm04M5VTy5J4ncdjkldU7udi6dZWu233T95UkddKXlX5MXRHfFlSS3hwcG+p/MRyPT5n4euD9PvbIHm5lib8/eVzK5zz112+5381v8rFGpnHSebc/+itJUofpWZxh/r8pkqR3LwnrXR7y+x6+/N/eT0n6+drNidMfNo8lTod4bHXIKj+uqVufud+rI32s81j3mJ4vhbUv68JwXl2S17WTJOnzfZK3c5fCigftXs79j5r81m592pN3+6RW/t4t7d7z5bfHNZUk3b7fAB8rWbS4VuqRzfIS+gPj92rBmuhMNil4c5Iv/+66Eb783l9v2+rnnFcS9ie4cfHBkqQfzgwrGnX9yq0cUdfeS+kZBgAAQGTl/tf1aii1rkez5fQ1Ga5JzStdvMSX/3bYEEnSzJHb+NjwgW7y/KhWlV9neNj3B0qSJo4PyU/dHvg+VppX6efpdHz29QinUjLX/bc/PvrQELw49ishqe70wkXu9zl3bOEZQ2/wv1e1kyT957gDfKzD9Mzt5pNuiT0YSsjjOPoodwEXnBwSuD7Z3yXVHTfzJB9b+qLbMc4k5Ha0eywkKD60s+tFL3rr07TVORKWr5Ak7fjwRT70i1+G6zrvHz0lSU2fy517sTzFfTtLkq7ddny1nuewr9yI0OJ32odgwmDHlae6HexOLFzoYwc2cp9RtzdI3pUO5UsctXx45Y6SpHpvTCrv9JzW5tUwOrxLR/e+OnnE6Co/z7GjL/fl7W+Oj0rOqlbdagM9wwAAAIgsGsMAAACILKZJVCCeQBc1pbPccEmPUWHY5C01if3evQrP5LbI7aSQwFX3NwCueYnbT7/27zaSpDe69PexGRe4xK799ghTUt7/pG/S8/Qe85Mvl82aI0myxTPTW9k6ruE4l6zUbVyInSS3rnKBvvex7RLKcYlpMgVvLa+R+uW60mXuunVN2E51WcLxRqqdZLK6oN5CN2Vkv8mn+tj7uzyWdN7C0vW+fPAjbhvlHmPCtLEGC9z0h47FyVsFS9KT97j13Z9qHJJKV+3mpkkVrqr7w9F1VTYnaqdD4lTJjn925aP/XJXPe2d7ZWfCdjRbewAAAIDoGa7Qt8UuKSF/RVgGLDqLrqA22GKX+FX69Wwf63mxKycujNRT/0t6LPciUHeUfuNGZ1oNDrGjtzCS1kWuR70qI2alP/6YFGv83Q/uWBWeJ6rmD0odb/py09qtCOoUeoYBAAAQWTSGAQAAEFlMk9hMlz+ERJCRf9gvVvo29ckAACBr5G0IizbftCysgd/qwY9SnY6IoGcYAAAAkUXPMAAAiITul4Zk5HfUKIM1QV1CzzAAAAAii8YwAAAAIstYazNdBwAAACAj6BkGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZJIANdwAACAASURBVNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk0RgGAABAZNEYBgAAQGTRGAYAAEBk5XRj2BhjjTFrjTF/qeT5w4wxa2KP61HT9ctGXNOawXVNv624ptfFzrfGmIKarl+24l5NP65pzeC6pl/OXlNrbc7+SLKSeiT8u0jS85J+lLRc0nhJvbb0OH4qvjaSjpI0VdIaSR9K6ss1Tct1zZf0Z0kLJK2WNFlSC65rta5pf0mTJK2L/e6/2fEusccVZLr+dfWnnOs6RtJMSWWSzqzs4/ip8Jry+k/zdZW0f+xzKvHHShrCdd26axqLZf3rP6d7hlNoIekFSb0ktZX0iVzjGFvJGNNT0mOSzpO7vuMkvUDPWlpcJ2kfSXtLaibpdEkbMlqjLGaMqS/3en9UUktJD0l6PhZH9XwhaaSkzzJdkRzC6z/NrLXvWWubxn8kDZZrEL+a4aplu6x//UeqMWyt/cRa+4C1drm1tljSLZJ6GWNaZ7puWexQSe9Za9+31pZI+ruk9pIOyGy1spsxpqWkUZLOsdZ+Z52p1lo+DLfeAEkFkm611m601t4myUg6KKO1ygHW2juttW+Kxlpa8PqvNWdIetZauzbTFclmufD6j1RjOIVfSlpkrV2W6YpkMRP72fzfO2SmOjljR0klko4zxiwyxswyxpyf6UpluX6SptjYmF3MlFgcqEt4/dcwY0xjScfJjRAh4iI7lG2M6SDpTkmXZLouWe51SX8zxgyQmy98haT6khpnslI5oIOk5nLz3LtK6inpTWPMLGvt6xmtWfZqKmnlZrGVkgozUBegIrz+a94QSUslvZPpiiDzItkzbIzZRtJrku6y1j6R6fpkM2vtDLmhpjskLZTURtJXkuZlsl45YH3s95+steuttVMkPSnpiAzWKdutkZt7maiZXHISUJfw+q95Z0h6eLORIkRU5BrDsblYr0l6wVpbqaVBUDFr7bPW2h2sta0lXSups6SJGa5WtpsS+80bdfpMk7STMSZxWs9OsThQl/D6r0HGmI5yOQQPZ7gqqCMi1Rg2xjSTW07tA2vtlZmuT64wxuxmjMmP9bjfK2lcrMcYW8la+62k9yRdbYxpYIzpI+lESS9mtmZZbYKkUkkXxa7pBbH4W5mrUm4wxtQ3xjSUyxeoZ4xpaIyJ1OdLOvH6r3GnS/owdp1RTbnw+s+qyqbBsZJ2l3RWbBHo+E+nTFcsy42WtEJuncEVks7JbHVyxslyvezLJL0k6ZpYxi62grV2k6RjJA2Vu09/I+mYWBzV85rc0P4+cmuOrpdLUMbW4/Vfc4aKxLl0yvrXf643hjdKmmSMuV6SrLUPWWuNtbZJ4lqD1trvJckYc5YxZkXscWUZrHdd9rNrKknW2v2stYXW2lbW2nMTl6nhmlZaqus631p7WOwe7WatvTd+jOtaKamu6WRr7W7W2kbW2l2ttZPjx4wx18qtl7lRDE9XJNV1HRB7b038mSBxr1YSr/+akXRdJcla29ta+8DmJ3NdKyUnX/+GueMAAACIqlzvGQYAAADKRWMYAAAAkVWrm24cnHc8czIq8HrZM2bLZ/0c17RiW3NNJa7rlnCvph/3as3gXk0/7tWawb2afpW9pvQMAwAAILJoDAMAACCyaAwDAAAgsmgMAwAAILJqNYEOAABUw147SZL+8eQYHzr2/RGSpB6nfx7OYw8BoNLoGQYAAEBk0RgGAABAZEVnmkRevvu1Q8+Uh2cOayFJajUlLEnX9u2FkqSS2XNrtm5ANX19+56SpLzWG32s40Pu5V1//KcZqROA9MgrLPTluZe66Q/96tX3sVkHPiBJOrL+3j5mN4b3AgAVo2cYAAAAkZXTPcPFg3bz5fWXrpAkvbvTYxU+Ju+40DM8caP7Bn7FRSN8rOGLn6SzikCVle2/iyRp19sm+9iTbW6RJDXLa+hjO9YfKknq/F7j8Nh162qjilnhuz+FXrQOb7tetAbfLfcxRoS2LL9lS0nSjOuLfKznwwn32Cdf1naVctK6A/r48tR97kk6/sHGWL9WGUlzqDuWDnfvsf+79g4f2/uPF0iSWt/3UUbqVB56hgEAABBZNIYBAAAQWTkzTSIxwWDVM9tIkp7qO9rH2uY3SnrM4Bm/8uU5S1pLkgqbrvex/+36hCRp9O23+9jv3xkkSSpbvTod1QYqZdZde/jy3wc9JUka0uSnhDMaanNf7v2wJOnIPqeH4KRpNVK/umjtcXv6cqMRCyRJF3Z608cObzzJl6cPLZYkrSgL1/H5n3aVJE3draxG65nN1hzgEpInH3Orj51wwd7lnY4qiE9BkaSNI5dXcKZ0xpvnSJKKiifWaJ2AqjjpotckSWWq+++h9AwDAAAgsnKmZ7jJyw18+cmuLkmu/2ujfKzdK25ptebjp/uYWbfIl7uWzHOF2BJskrT/iydKkt7b+Skfm33lDpKkLlfXrcnftcU0CNfZ9OoqSfrhj+GaTd2r4gTFVLqOHyZJ6nvVfB8rWbQ4nBCxnZTiPULzh4akmTeOvNGXuxQ0TnpMKrev6Oaeb/kaHytJRwXruIL27SRJR137lo+NavVVijNDX0CvevF7uNjHem/7niTpTxMP8rHZZ3aRJJVOm5meyuaIpia8LywatY8vb3frh5moTk5YclxvX/545zuTjj+zprUv97rLJS1G653SWXC5u9+aHRQ+z/WAGx1u+szHVX6+/KLuvjz/iLaSuI+rYsnI8Po/o/k/YqX6qU+uQ+gZBgAAQGTRGAYAAEBk5cw0iZs7P+fLuz31O0lS0aX/SzqvdEtPVBbOaHJTc0nS4gdDUl1ZftIjclfClJH4zn3HPTXBx4Y2Sx46Kt6KcbpZh4xxhUNCbK/rLvDlNmOiNSVl5m1dJEmzDrojIVq5qRFvrg/D1Xc9f7gkqeuc3L9+iy8MQ3P7DP1MUnlTI4I5JRt8+cuN20uSWueHKSV7x3Lpbmr3vo/1vngnSVLR8PA8+W239eXSxUuqWPPcU5YznyqZkd/Cfe4ccF7FQ/xjLhziy/UmR2uXyZWn7uXLL13gppD9f3v3HSZFkf9x/NMbyJJzjkswiyjBjCcKZkX0ECNyGBHvDD/15DzvvFPPiHqC4RQDJkTEnBAwIWIAlZwkCYJIZmF3+/dHzVQ19Oyyu2ya6ffreXi2qO6ZLZqemZqq+n6rZUYNW/fjPeYz+/mbXRDtK+/3kiRVW+X2Euh3oXttx7Wr8pkt/6H6AknS0DddEHLugsV71fZUt7GDC5arlVbxl0fEMTIMAACAyKIzDAAAgMhKyQmtmgu8PZ9UCBkfmTykYzceWCLPl2zyeh1gy2+++ES+5231d9jygp3hdSSjfz3alg+oYbJ2dK+60NZ1zjQ/Mz332JOucNNX30wwU9ipPAUd32JZku7t/kqRH99hnNkyPOsZN83fZkbqL49Yf5HJaTv9JpcLvLA5LQcPG27LVV8326xntG1t6w4dP1+SdHP972zded3M1PXY0YeH6iRp+jVmC/i0qW6r7FS2rkv4I6R7/+9t+ef/lGVrkpeX4a5jo3fN/Xt348RLH/JiOSMqrc+2dVHLIlF73hZbnrqtlSRp4D7rbN2+lcy+Anc2mmnr7hzkyoVnll7Mvr6+rcn6E8skCjLnHJf5pOJnF3YYGQYAAEBkpczI8Gn/vsGWN3QxQXAN9vI5t51mdv26vPZDtm50MMorhQRHJvxDTH7bs0a9X+Bj7lnXRZL0+n0uD2udpxONRroAxCUyuTFf7dPH1lW+cZUkaWLHN2zdiAZuNC5rhBn9y7oiNUaGg3kYX73RBH9U89xIeMP0goPl1ueZ69n7P9fbug4jzeikn7fHENGkFwyWi48IB2cVEgVxHvKVCYBpeoYLqquqr0Ln5SxaYsvvLDf39631A6NLsZGm2/slHvl95ykTcPNIh6wC/w2pIjM2EZHuuXGVn9Y3suUaWlTWTUpK6Q3cyOMTLd4OHd/su1Hgno/+WZLUfHp0c9/602fZ8q2TTCDhwFNHh85bnuNmyl7eaGY6f86ua+seaBKtwMOysKf34oqKkWEAAABEFp1hAAAARFbKLJNo+KibMmpYwHlFkZdpAvEqe5kl9IwVS3zbX0la9bSb2vzq0KfzfUzHDy+z5U53bpQk1Zlb+ECteA7NncN/s3XvB5ZHpLJfLzfLPZ674V5bV9itld/d5s67/hmTg7nFg9GZJl31Z7c04s1hbmvqPJm8ysHpuDe2mPt65LUDbF3zqXNi5xfe+h/M1HXeQe5R8d+TX5De0VVNEM8t17v2Nr0ndf+f0v+wVpKU67vrsfHDxrbMMonCmfuX1gUev2GlW4rW/M7UvZ+Ko/MN5rXdtsqltu6pI/8nSXprw5G27sdBZumSt9XlF7/qZTel/3CzcF7n+DKLTiM32bpkCgorDzt9t1Qv/j75bbYbd91nWU6Zt6kwGBkGAABAZKXMyHBpWHnqzvJuQqnKa93Ulr86dEzo+OY8F7TR9Q2ThqrTQy59Te7cBUX+nb+MMaNG0/Z/ocDzZu90177Sb8m77d/vF/Sw5S9uNYGYGaqc3+n5erT3H2y5xdLojQwdde4MW26UHr5+k7ZVseVHL+8vSar80XRbV5zRnA5P/WoK54d/z/wdbvRzcC03+lnFM2+pOdWL8QtTROZR7j1CpFYrUHr7NpKkK/qEg5XX5G615S9fcKkXGyt6r/+C5G40M5QdLnLvEf8+9I+SpLStLu1n7k9zJUl+D5cq9YiaUwp87q2+mR3O+2FOyTQ2Rf08omfgbzNCx/+39ghbrvTu9NDxioCRYQAAAEQWnWEAAABEFsskdpPeuYMtTzkmnl+4qq2rPzOJEuflI22ffSRJZ7wwKeHxkevNNXj5Xy6ncofnv5QkFSeLbdpBXWz5mqwP8z3vrAX9bHnbbU1sufXk5NpJLTgN9/o/7rHlDBUuWK7vnFPN+Ze4nRRzlq0s1GN3Ht/Vljc3qxQ6Xv8Ll6s5d97C0PGKJr1mTUlSzYzfCzzvigkueKbdR1+WzC9fZa5Vr79dY6vqzDHBN791dssyBo94SLs754zJtvzl31IzAFeSNs42ecN1iKv7Q4u5tvydUJAl55r3uWF1xoWOHTXW5RFv+wBLI4rC//oHSYk/r37Pcu/D5+6zPnT8s+1uUdVNf7lOklRN4eA6SBnNzFLLYQMmFHjeZ+PcMp9mFXSZDyPDAAAAiCxGhnezs2ENW26eYcqnzj/R1tUaZ3aeSubx4RVD9pckXVzzE1sXDJYbe6/ZHa7u83s3Ivv7IBM89tQd99m6rMzwaKU9//6Wtlx1cnh3sGThZ7jvmHvaTS6u39xTbDnjotjzbN1i6zad082Wq1+2It/nuaX107Z8TJVwAOg/1u5ny2NfP0aS1PpOF/DgZ2fv/pBytXxMM0nS+IYfJTzee5ZJn9buzyU0GhwQD8yp93iC10HnHuG6gJvruzHRU9WtgDOTW5PPY2NvA8u3HclqR+dt+R6rtsrL9xiKb9/Lfyjw+P0r3IxotdcYES7I4otaS5IurhUcGXaff3f8aqaMWr3iZjYrZmI1RoYBAAAQYXSGAQAAEFksk4jJ7memMofe96qti++ksv3/3O5sXvYvZduwUrCpfXii4pB3htly1v+Kvzxi3mOH2fKEE+83z1fA0ghJ+iLb5BHeZ/pyW1dRp1IKY8kpVfZ8UsyARWZKzjvFBYituMQE4B08cJatm9ji0RJp26313RThrYNN+cQPLrF1aZ+Wf8jT0r+7JQizuj0cK7nv7e9s3ceWq59Y/jucpSUYUzjg8attuWUFDRhB+fC67W/LE3s9Eiu594zp2WYRXtMn3et/T3myl7x0gCTpvq4v27oHLj1PkpQ2+du9aG3q2HxOd0nSnU2Dya9rhM6b/XaWLTfX2tJuVlKr0dPkYg++B2Z6bl+A95Z3liTVXTSvbBtWDIwMAwAAILLoDAMAACCyUnKZREarFpKkn89pYetOPM9M/TestDHhYwbXelCSVDPNTVfFp6YWnu3yDLfNNPnyUm3qqdrioudCTa9vcoyu/GNHWzfhRJc5onNm4Z7z1uuGSJKqrkjeDBJBmRsLHwV+e4uJkqSF39WzdT2rmK1Z66RVTfiYVJfWZZMt5yWYIL5/iduaupKWlkmb4ryu+0qShl33iq1L1EYgP6sPc8t8sjLDS6qumX2uJKnOpvkJH+/Flp0tfq6TrfvpiKdD5215/DVJ0pNZbYrd1mSXfZLL5JJ7kVny0CQjvDQiKC2QhCe+XXbugsUl37gUEnwP3BlItVX3H4VfMljeGBkGAABAZCX9yHB8N7U593S2ddP6mcCtOmlF+VZSWZKUE9izZlPeDvPcAx6xdZv7mzysfX8YZOu2vucC7Bo/ZPISeuluEfn2401A1KYW7nLXH12xdlU7+1y3Y9b0V2Mjvb+us3UbTjDXd83p223d+fuakdyb678feKbCjQafMf9kW67+wY+S9hwkkixOOavwAVOdMivHfm4O1BY8IpwXy3K9YKfLCdw+9jxpSv7cpN/3eMaW4/fEvetcfuRqF7mhm7IOtJx7pfm/GbDPqoTHv9hu/h/ajqn4eTVLy9C6n9ry5YcOleR2BMOebZvUQJJUR4lHhn8Zeqgkae6RLqg2N0Hi+ypeOM94VGw/2QRy3zfyYVvXtXLBgdxxs65z1/VP55hg3uUDWtm63OXmte/v3LHX7Ux16evM51pxdq4ta4wMAwAAILLoDAMAACCyknKZhN/zQFvuMtLkYnyj8X9t3ZiN7SRJ9/54vK3L/LSmJOnr60cmfM4p280Uys23D7F1lTeYwf2q17gpz+GtPjDnH+DyOeoAV+zS+CpJUk5tNzEwvo/5nWd9NtTW1R+d+N9WFmosDv+331p/pi2//KbJpbw4u4Gtu7HexyXahsXr6tpy8y2Jp5zhdPhosC37W8z/X6Xf3FKc1waawMX4sov8pHvu+++IX00wWKWVLsdxRZ3Sf+H53rbcbEXp5e3NaO22BN/ZtI4k6fdbttq6eQeNkpT/kp51uSY4J2fRklJpXzJomeG2IN9Zy9yPSflBU0qqrHd3z2bfLHWq4gWuUOwlurn/4bZq2yD3Gh29vwn2zvXd6z+RDpmxHLndz3aVX85MfHKK2dzMXJvCLo3Iz6jmseWMn7m6Tk9cLklqdVvFWupYVnaecKgt35z1Yuh43zmn23LGL7+WSZtKAiPDAAAAiKyk+cK+9Uz3LfmcO9615aG1zQ5UB3x+ka1re60J/Gpdyy1wb/SU280n7v1t1W35wQtNOpvanyX4tjfBFR/qeIok6YaTG9q6Gde50eafBpkF+/MCi+vPfPY6SVL7v1aMb5LN7jOBb4f2PN/Wfd3tOVs+p8YaU4j/zMfMHWb0+5q559q6nS+6YMK1x5lRj7m9Hw89dsf8mkVsdbTdcbi7CdNj45L9a6wLnFHwiHBcfFdFSXr5taMlSS0XVfwd0hp8V7rBKnlHm5SJVz/5gq07turmBGcWPH7wl8/6S5KyNKPE2laRVVljXuM/57jR8+DIMMJqvvClLd9w7XGSpEebuaHH74Y9HHrMrgoeEY67b3UsBWFERoODGo01QdnHLLvM1n3yRPhzqDh6nWD6EstvK5GnSzpd/un6UidVWx86nj2yiS2nbVpWJm0qCYwMAwAAILLoDAMAACCykmaZxIrTXc7E+NIISXpgfZYkKfsXNzV381STp7RB+jZb1ybD5Bx+Y0sdWzfqojNs2fv8u0K1I3fuAklS0yVu+P/0V92C8XlXNjfHp7rp6NYTK8byiDg/x4RJNb3VJac8/M4/2vKANt9IktpUdssk9q1kguoGzbzI1lV9zlzLGi+7aT/J/d/0vDp8e8Wvf9ao1M3D+tZLPW35zqu/KfbzBIPdzq1R/ECEjXkuN/QhH1xjy1m3V8zlEZmemwaO72a05Bx3vMaB7vo2vdv8G3KO62rrPN88aPkx4Tzjh53g8t2OaTUl8HsSLWsIjxXE2xbcZanj+CtsOeuqaQmeJ3V5n38vSXp7i8vzPrRW2e4KmMymvmGW5+jyzwo+sZDW5LrlKivPiQcpbymR504muRvNTrPVFrvAw/Wxa1MnPfEynl4zz5QkZY9rlPB4XNW1ZplaNUXstR7bffOoWm/aurQE75FVX0/OnWQZGQYAAEBkJc3I8CtHPhb4mxs5urbOPPPzzHmhx4zd5HaNOeMZM7TU/F9uNMzT98Vuj5/tdv/KWepGidvekDwLxvN+mGPLDU519VOamNR0Uyq70R6/qgnQajB7boHPmd3P7QV/Y4P7YyW3o9o/55xknmdxwc+TzFqO+8WW/zOwoy3/pW7R/s25/t7tyff3tftLkr4+ta2ty1r69V49Z1kIBvnF97yfc6JLnbi9j5tLmHxZPUlSu0w3+5Ib24WvY2bBgUY7fTcWkFfI/Q/jI8LBGaasJ12gXYKNwCLhP1/0seWhJ7q8kRtbmtRWdUOPgCS1HmV2mRt+ugsQv79J0Ucc71vfQZL0wmPu/6Hh0oo581OWcme7Xfy6ThguSVp05qiE566aZ1KJdni8Ys3kVhS/djVB76dVX2vr4u+ad/x6SDm0qGQxMgwAAIDIojMMAACAyEqaZRLnP32tLc8c4vL6XrjE7DK3aqvLW7vm42aSpFaPu2np5muZMiqsnFW/7PmkfGRe5x5bP71q6HjN/6Z+fuHc+S6IcPKZ+9vys2eavJ8Tr7jb1hUnJ+s23+TcHbG6Z+jYB893t+UWr5sgxZylS4r8O8rT+C1uUj04JRcX3K2rT7UNkqQ0uZ2mCrvkYU9+yzVLof72yx9s3Qdfme0md1ka8e2PJfL7klmLiYFxlRNd8ahYQOHsN9z/ad4GE9wUD+SNstxfTWDs/GP3sXWnNDG5qo9/7VtbN6zOAlt+dlNjSdIDj7id5Zo+YwJDG27kcw5lb9zrR9pySyXnPcjIMAAAACKLzjAAAAAiK2mWSbT6t8sDeuq4ge7AgiWSpErb3baAzWXyXLqYdJSm9PZtbPm8ZuF8mS9vdltXV59rpgWjMkEaXDLR7C5TPnfl9bZua2OT+eCja+6xdStzzMty0KPDEz5nRix9dsOHw9NRTQJTVMl6je94wr2+0webbcLf/O1AW/f1q27pyeZ9zVKGB48Ya+sapm+SJB1c2S2X2O6bq/HhVpdDNNNzV2inb675LS+63117rskNUet5l0e7Qyy3aFSzRuSn2jsuM8+XLtGO7m5sspd8NM1tF/7g8SajTM6Sn8umcUkgb9Mm95dY+b393JKy9xSO1m8UeK3zWbf3rjruA0nSR8062bqcFSvzOx0phpFhAAAARFbSjAwH8/r6gfy4KH8LLmlsywP3WRU6/vjwM2258qLpZdKmiqz2sy6PZe3Yz0H39Aqd1zRJAxH2VnxXOUkafXc8R7IbOUt0XR5Rli3Hd0paekotW5cRi3dr+p+Cr2krkWO0OILvzyMuHWzLdz5lcrrOzW5q6xgRRnloMM2M/a05ze3I1zC9ui1fV9fM3H1Y0+1mqRVl07ZkdeBnl0iSmk/evoczKz5GhgEAABBZdIYBAAAQWUmzTAIVT3oHM4V94xnjEx4/Y/7JkqQq77t8mQQeobT5M0ze35Yz9nAiSkX6pG9s+a9tuhVwJlB24svT7hl+hK27p/G3+Z2O3dQfba7fqaPda7qVZpVXc0ocI8MAAACILEaGUWzb2tWTJF1QM3GUwbwvWkuS2uSEg+oAAChrkx90u3TqX4wMw2BkGAAAAJFFZxgAAACRxTIJFFuld03O4JObdU14vA05WwEAFUidZ9znUp9nDkpwxvyyawwqDEaGAQAAEFl0hgEAABBZdIYBAAAQWXSGAQAAEFme77MnGAAAAKKJkWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAAIuRvCgAAHctJREFURBadYQAAAEQWnWEAAABEFp1hAAAARBadYQAAAEQWnWEAAABEFp1hAAAARFZKd4Y9z/M9z9vied4/C3n+pZ7nbY49rn1pty8ZcU1LB9e15BXjmt4eO9/3PC+jtNuXrLiuJa8Y1/T42Os/z/O840u7fcmK61ryUvWzKqU7wzEH+r5/S/wvnued4nneD7H/nM89z+sSP+b7/pO+79con2YmFXtNPc87MnYtg398z/POkrimRbT7vZrued4/PM9b6XneJs/zvvU8r7bEdS2C3a9p/I08fq8+ET/m+/4ISfuWSyuTD9e15O1+TY/zPO8bz/M2ep63yPO8IfFjvu9/GHv9/1wuLU0uXNeSF+wD1Pc87zPP89Z5nve753lfeJ7XK35isnxWRaEzbHme10HS85KGSqotaaKkNxitKD7f96f6vl8j/kfSyZI2S3q3nJuWCm6X1FNSD0k1JQ2StL1cW5QaDgzcs4PLuzEphOtaQjzPy5Q0XtIoSbUkDZB0n+d5B5Zrw5Ic17VUbJZ0iaQGkupIukvSxGTrV0WqMyypj6Spvu9/6vt+jsx/WjNJR5dvs1LKhZJe9X1/S3k3JJl5nldH0rWSLvN9f6lv/OD7Pp1hIPXVlfkC/GzstT9d0mxJXQp+GPaA61rCfN/f7vv+XN/38yR5knJlOsV1y7dlRRO1zrAX+7P73/crn+akFs/zqkk6W9Iz5d2WFLC/pBxJZ3ue94vnefM8z7uyvBuVIqbErulrnue1Lu/GpBCuawnxfX+1pLGSLo4tl+ohqZWkT8u3ZcmN61p6PM+bKTNz+YakJ3zfX1POTSqSqHWGP5B0tOd5x3ieV0nSzZIqSapWvs1KGWdJWitpcnk3JAU0l5nGy5LURuZLxt88z/tDubYq+R0tqbWkTpJWSnoz2abzKiiua8kbK+k2SdmSpkq6xff9ZeXbpJTAdS0Fvu8fIDPq/kcl4ZeLSHWGfd+fIzON/7CkVZLqS/pJ0vLybFcKuVDSGN/3/fJuSArYFvv5d9/3t/m+P1PSi5L6lmObkp7v+1N839/h+/7vkobJfNHoXM7NSnpc15LleV4nSS9JukBmwGZfSTd4ntevXBuW5LiupSu2ZGKspJuSbR12pDrDkuT7/qu+7+/n+349SSNkpkiml3Ozkp7neS0kHSNpTDk3JVXMjP3ki0Xp8rXr0imUDK7r3tlP0lzf99/zfT/P9/25kt6SdFI5tyvZcV3LRqaktuXdiKKIXGfY87yusbVCDWQiSifGRoyxdwZJ+tz3/YXl3ZBUELuOUyXd4nleZc/zOstEPr9Zvi1LXp7n7et53kGx138NSfdKWiETQINi4rqWim8ldYilAfM8z2snk6nn+3JuV7LjupYwz/O6e553hOd5lTzPq+p53o2SGkmaVt5tK4rIdYYlPSjpd0lzYz8vK9/mpIwLROBcSTtPZuZinczoxV993/+ofJuU1BrJTJFulLRIZo3ryb7v7yzPRqUArmsJi30ZvkTSQzLXdbKkcZKeLM92JTuua6moLOkRmc+pFTJL+fr5vr+yXFtVVL7vp+wfmcjGDZLuKOT5F8t0kLdLalve7a+If7imXNdk+VOMazoidv52Senl3f6K+ofrWiGuae/Y63+bpGPLu/0V9Q/XtUJc06T4rPJijQUAAAAiJ4rLJAAAAABJdIYBAAAQYXSGAQAAEFllukPQH9L6s0C5AB/kvVLkvJxc04IV55pKXNc94V4tedyrpYN7teRxr5YO7tWSV9hrysgwAAAAIovOMAAAACKLzjAAAAAii84wAAAAIovOMAAAACKLzjAAAAAiq0xTqwEonh19DrXlpQPzJEmXHzLZ1jXI2CRJ+vtXJ9u6+h9VliTVe+V7W5e3dWupthMAgGTDyDAAAAAii5FhoILK6d3Vlv/x39G2fGjlXElSWuC7bJ7MaPF5vUe5J+htfhzQ91Jb1XrAzNJoKgAgYn65tqckqeEpy2zd251et+VML12StNPPLfB5Or1ypSSp43/X2jp/2UpbLosZTUaGAQAAEFl0hgEAABBZLJMAKpi06tUlSdeNet7WxZdGSNKNv/SQJL3/+mG2rs3TP0uS5l/ewtadcdIXkqSZRzxp67o8N8SW25//bUk2GwAqvEZf1LTlMa2mhI63e2moLbcf/mWZtCmZxJdGSNIdVz4tSepTbYOtywucu9OP1wVrw+b0f8Sc19+dd8Rfr7Hluk99UczWFh4jwwAAAIislBwZXnar+eYy6/KHbd3jG8yI2cwtbuRsYbftZduwJJZ9UjdJ0gdPPGbrRqw5WJL0Xf92ti53weKybViKSK9dy5bXj60vSTq+6iZbN3uH+8b89Z0msK7FuM9tXU7sZ5ubl9u6H/7bXJJ0/fhMW/evw16z5acbHS5Jyl29Zm+bj90dtn+47qtZZd+OvZRer64tz76jvSSpxhL3sbGlS3boMTcd/o4tr925jyTpxnqz3XN64TGYXN/c3x0nX2LrOgyeZ8tRSgmYc1zXUF32DettedL+r0iS0uTZukd/byNJ+m6T+3ybvMj8f7V7IBC8lIT3YElLNBoctHCA+4zTAPPjyCv/ZKuqjZ9WGs1KGvV+cK/54Ihw3BMb2try04t65Ps8fVv8aMu31g8Hdvcd5v6fpk9oJEnKXfdb0RpbBIwMAwAAILLoDAMAACCyUmaZxKJ/u+H4HwY9KEkauvwYW1c9wwztX9lgkq077YXLbbnjLWYaKmfx0tJsZtILLoQf0XCGJOnXj910/ZmzLg495veZ9W256RQzoV995gpbl7NiZegxUePv2GnLPRuGl5rcvfJEW64+rnDTdDnLzJKJhac0tnVzW51my+nZEb/XA0sZuo4yu/TNOLjo4wPrLnXvPSdc9ZkkaWi9/4bO6z32eltue2PpB4SUhDWnd7Tleac9XMCZBQuGz+QVkHP0jE5ut8QfW7V3B2bPL/bvrsgyWpilTD+NcK/ReSeZXOHB99pEOcWDY1lDai8wNbUXufNamM+62zu7ZRcfjOxly2URlJRMLlh6lKTEyyimPuLytx8ps2QiqsslqsxyOYU7vXmFJKn6YrcUr+WT7rVa91e31Gl30+s1suURH5oll/E+hSS9vWxf9zzr8n+eksLIMAAAACKLzjAAAAAiK2WWSQzu96Etf7jNRDCvuLiZrcv9yQyz3/jJmbZu7tFP2fL+518lSWpxR8SnjouhUXpVW5560AvhEw5yxbQLzPevHn+7ytbVe5xlEj8PcxfpjcYjYyX3XXXaV266ur2KlvsyZ9Uv7i+BcsEbZKam+LS0JPV9+hNbHlJriSTpxN4uD7NiOTJXHF3ZVvXqY6KeR7dwU6l5clN7bvvRqqG6n853ywxOvjGcMSBZBKfvb1tjsswMqfuprTv+3eG23Po1cxE3tHXTqFuamp/tXkwQGb5slS3mbkztpRGS9MaXb0iS8uI3m4JZItIS1EmP/W6Wj6za4TLQJDK0nlm+dkfD72xdkz+76P9X1vWRJFWd8FVRmp+yPvuyiySpT4+Ntm7rGSbjTnCZRLx8wQ1H2brFd3e25VRfPhHMPpT1p3AmosJ+rgQzQ7w6xyyTuL2hy31/cosfbHlavcahx5Q0RoYBAAAQWUk/MrzxvO6SpL/UfdTWHfpPM+rY8KfPQ+f/ONvlYVSH0m1bKllzSOaeTyqC/te4kfwpH5mF8jmLlpTo70gm917qdomLj7wFcwt3us/lD84Riiv9OXf14qPBkrvm744ZHapLFLyUlzCgKfGOS+0nDQ61o52Sd/e/O9e6WYzvzICOrtARti5L00OPaZCgHMWZCWnXYLn4iHDwfjlmlkluW/Wu2gkfX2mGCZbL3bgx4fG43neZgM3gjEQ80E6SRl9kgum8PLeTZZWJjBIHxUd5+4x39/yC+02fY5d8xI+4maLguQjze5nrs/yYarbux6PMbGjwdfDFuja2nKZtpd4uRoYBAAAQWXSGAQAAEFlJv0zit9PD23Q2HW9yLSaaTs66PDANdKor1u31S/hkWDV7mYXywSnji5f2liT92vN3W5fe3k1tLBrUJPQ8cy4zy1muqzvH1r2bdYwkqVIEl0nsPOFQSVLvqi4IKz5RdObb19i6DstSOyijtC18wUzNzW7vlqMEg5Li4wKFrTtrQT9bs+htt/1os7vCS7OSeUlE9snh7VaDtp1uptg3NXUfJd6J62w5bULd0GMaTjXvJbnzFpZEE5NOxm9uyVn83hqy7DhbV+PERaHHBOXG8mNvbFfd1v16ynZJuwaFxwM7E92/kjTrcBPsvPMwt2Alc5QJ9uw10wWa76k9UdN+uAlg7jOc5RB7kl6zpiRp6f/c8tTxhz4iSWqVUSlwZnhcNvvuprZcaV146VVJY2QYAAAAkZWUI8NpVarY8llZJm3MafPdSE3OqlWhxyQybKXbOerwBkskST/kc27U5flmdCG4wP2I2ib10fhAeEzuArd7WqsR4Z3Udg7ODT1PlPnX/xqqm5ZtRo7ajCNUbm8sutu9vp/rboKIgvddcDRu6sLAbme7af2EF6pLn/SNLTdTCs4qpZkRwkObLAsdurauG6W5eqSZaauVViV0niQpQQa5ketN5PLL/zrB1tV6vmjpApNZbTcpZgPoBjecbOv+ftiFocesutm9F7x5iNndsEkgpWXBgZ2FD/aM162a597TOygaI8O9uv8kSVpdjMfGg+okN3KcqtLrudmeRdd0Ch2/8uy3bLlLlVmSpCOqbA+cUUn56frQMFtu8Yl7jy2L3gIjwwAAAIgsOsMAAACIrORcJhEYpr+joQlY6fFAL1tXR4VbJvHz1jq23LbG2liJ6fvCujiWp3X8LllEw9Zc0TPwNxPUce+6/WxN1ekmkCaKeUdPaTIrVHfJuMslSe0+/qKsm5O0grt6zb7B7Dw590yXXzUeRDQ4sDRiZfdNtpzMQW6lYevpJrBzdItHQ8dqpFUO1RXF1XXM8qoat7qp0/HjW0uS8raGA6JTTd2n3Ov62HP6S5Im7f+KrXt7/DOS8tuVTspT1VBdfFxrxJqDQ7/v9NqB4FzfjX8NHnW1JKnV827X1ZzlKyRJHRS9gN0xrUyu4Hb3Dw0diy+hCJ63K7fL35FT/iQpNXai236yy0H982nmfhzYzS0DmdDggwIfH79Hg8t3VueanMHnzznf1qX/u54kqdnHLgC5rHtijAwDAAAgspJyZHjZgNahuloLC7dDyeqr3SjljPZu5Kj927Fvc+PcyETmJ2bv90Yjw+mSoub3mfVNIZBN5rY13Qr12NwT1ofqXvpfb1tuvC5a19fruq8tH1fdpELK9NxoW9PPojhGXjzxEeED3/jZ1r3ecIKk3YM0zff+L9/Z39a0VLTuu6JYddaOQp03cLEJgpv5cZatazwtHPi54ij3URPfEe3imi447/WM/AMYU826S11g54Ut3paU+F5NVBesP+xfLtio3o9mlD0Y2Bn38guX2XLDCS7QsdlL5v6PSpju1jMOj5W+K/C8XXaWS6DdS+GR46ZT3Ch+KowIxy3r7+6OOcePkpR4R878mXMX57hZoIG3m50RgzMk0pK9amdJYGQYAAAAkUVnGAAAAJGVlMskmk4O7Ir0Z/Pjoicn2qq/TjtNklR5QTj35RUD3grVSdKCvqNCde03DJEkNSpuQ1NIm/8zUxp9P3BTRBkfz8jvdElS3tEmmGP8wSNtXZqqSZIyN/sJHxMFW1rWsOXOlcz30Z1+4ZdGpB3URZK07MTatu6gU02Ax+fTXd7HDsNSO9+lJPV973tJ0pBYMKcUDCxKC9XNHOLuxdGB5VZvdTc7J+Zu3Fg6DU0yudtMnuF4sIskDVl4jiTJu8Bd19w1Jk92q+yCgz2zfnA7UOn88PHF15qA2pZ/T92lK/Eleo8Nd/dgt8rhAKOC7l9JOmbWAElS0wluaVDOsuX5/t52fyx4WUAqc0sjpKmPhD/j9+TIK8PBcO2V+u+rcX27/Fjg8eErj5QkNajkgpHfXuaWAX5+8FhJ0mlfuX5Dy6cqZmA4I8MAAACILDrDAAAAiKykXCbh/bjQlnt8Z6aMvjrY5Wk8t/cTptBbBbp6pcss8ekKM016blsXjXvFYZMkSR9qn71qbyrZ09KIoOVHm3yYzTNcpoRg7kwU3ub+brpvzH/ulSS1zAhvx5rb8n1bd2In89qo2ie8LXZSO8xlhBhS62lJhY/G32U75sDSiicuOEWS1PDh1J2mL4qswV9LkgYf6qY3/a9Lb7P63Kqp+b4QzBwRXx5xcGV3D07PNvfl+V8MtnXx7b+33fi7rfskkIf44/1fkiR1GnG5rcsanP8yiShbeVR4K/VE2SCkxFkkUikzRHFMGev2U79tULYk6dVP3NbTWbeZZRRLKrnFpHXXzbPlU7pdJEnKOdstDdxvhrnn5/RvaetyFi0puUYXEyPDAAAAiKykHBnO2+5y1tXpZ3Yz6hNIgLt2iPk2nls5/K2w9qKdtlz5rem23ESzJUlP3n+srfv67PskSe8feaWtS5vKTlUFyWjW1JaHnTshdPyK5UdJkhq9Hdj1qPSblZwCI6A33vmsLcdH2lcFgptO/+5SSdIXXZ9z59UwI0vrSrWR5avrdBONdXIrF+gxdobZNanL39xOlDlNza6VK451szzfX+PyjF9yuQmsffNhtyslSnc0OFWl165lyxde97YtJwqWGzLT3L/tBoY/V2pMcuUel15ly/934/OSpAUnjbZ1HR4yo8Qdron2SGZB4iPC7Ye7ALgF93fP73RIanKfmyn7znSHdgkg3FOWYX+62WHVO8vNkPy7sel3dbra7W7XfviSvWtoCWBkGAAAAJFFZxgAAACRlZTLJPak/uiSyWNXM83kKV58mgsAaze1RJ46ZS2+qLUtX1wrvExi6rsHSpIyB7q6pnevLO1mJZWGf14kSdq0w+XJ7lNtQ+i8s2+73parnbu69BtWUXw1yxabnG5+zgh8r8+SCf7aZfnN8hWSpHqN3NRcMJhzSO0FkqQ3D7sk4e8BCmvlIJdndUjtD205vjyi46tu2V21laZu+ynuvqwy8avQc9Z70n2m/aWHyfd86kkub+41vd+TJL2j2oqqYE7hNjeYZY9b707NbZKLIq2aye2fe1AHW+d9/n2ZtqHmfFd+coMJnGv11s58zi4fjAwDAAAgslJyZLikVWsfHpWD42VWsuUWx7ldkdJi37V+znGBXq1GkLoqOELR5Syzy+HC4/5n68a2fS/Bo9z31u5/N8E0jae4ALGrb30ndpY7b9pXHSVFa8ekPamy2t2L3+5w4R8Hx3YC3NbEpatzJeytHa3rl3cTykzXgTNtOfh6jAd7dr5nma3Lic1YFEdwV7p0UlbukkZtaqspkqR2R3Wxde3Hl3mTKoRFt5jZ2B1Nd9i6rDL+GK47Z1uobnH/wGzeh6HDZY6RYQAAAEQWnWEAAABEFsskdpOWHc5NjIL57za05Tc6ubmo+CR03zEu0Ku1Sia4MVV0vN0swdl5bK6ty9tD9saM2IzTwn+7nLnHVt0sSVqbm23rWr6Xq1QR3MkrGExUZIGguDzfjQXEr/k+M9y0NfmvS87mmzYWeLz9syYbdurcsUbwtVznSfN6zVk+u4Se2y2NyBWfW8WRaNe5I6/8ky1XU/IH3VVbZe6NqRc8ZOt6PGeW2rU/v3T3TUivZ/K7z77UdTUvju38+en+Lqru11JtReEwMgwAAIDIYmR4N+1eCoxgDCq/diQDr6tJITSx0xhbFxzTHLjoJElS239+m/A4pNz5i4r8mHH/uEeS1CjdhXjFr2uviX+2dR3eTf5RjbhHb3WjGkOqDbPlRiOLFgmy6G43wtyt8je23PETE8jYbjk7TJakeMqwCfvdH6g1KQMP+vICW9N89k9l2axSNfd3N1OW1sKNN21pmC4p/q8vmqW397TlsceNlCS9tdXtdDf+phNizx1OyxZlwd3m4hp9UbPAx6RaCrbMzWYGoU6au/PmHPuEJGnEtwfbug8f7GXLDSYtlyTlLHXBnnHpHdvb8vZWJpXf4v5uZuLI/eba8v9amsi44CzG6tjs5YJHO9m6WhUgyJuRYQAAAEQWnWEAAABEFsskduN/+6Mt37S6qyRpvwa/2Lp1Zd6iimvlXwte9DBzqtnxps12gub25KNt1Ww5HgyXnwbplUN107IzJUltxqVm2Ne0rW5q7uCBLghu5bT9TWEPu8XFl0d8dO49tm56tltm0voJApASyWjR3JYXXtZCktTq7S3uhC9n7v4QbT3T7QT2yH0PStp1inbeTpPvtNbLLgBUfurkyQ3+S/YUDFtYV579li0fXNk85+pc97lU9Zdtod8NacH93W256RRzdca0GpXw3HjgXCoEzQXVf830aYZd6ZZB3N/UbKU7ouEMW3d7YDljPAf7VT/9MfR8nx30oi3v6f6O77oYPO/I96+VJGU9V/5LI4IYGQYAAEBk0RkGAABAZLFMogB5vpk6fbb1R7bu1OanSNq7bTST2ao/u6jmGd1MVHNwW9COr19lyx1uZnlEYY084SRbvnpIE0nSpD+6Kf3g0oh71+0nSZo8xE1Hp/9mpq4z5rlpr1Qyakw/W/a6/27Ls15/VpI0cn0rW5fmmSm5IbF8lpI0eoNZ4NQkkIHjqsXuOdMnucwScOZe65ZJfNzf3I+X3XZE6Lz5Yw6x5YlHPWDLWYGt2uPOGWUynjR/KTW3Zs9+pZEtr+7i8n4feJlZyrNkcVdbl/Gxeb0Gl6OsOL2lJGn6TSNtXfA9Nj713PeRG2xds+mpeS331i55hAeEj7d7aagttx9fsabtS0ruRpMha9HQfW3dA0+b98Nr6ybO4nJg7GU79aAXEhwt/Bhqz2/PkySt/cVl8Oh8o8mgVNFyijMyDAAAgMhiZLgAb3xkRt7uHvi1rVsyyIxANf9XtEaG4zvJDLzoA1sXXxT/7Q53XqcH19pyRfvmV5HlLFpiy21vMuVLbwqPwO3KBS+l+rVudpcb+YrnrpWknYeZf/mQ2gtsXVqCoI34KPFRM8+xdXUv214qbU0lh3V3OUNrpZk8ufMe72br7j9mrCSpX7XgjIQbDV6eYwK7+j7lRjFb3pVaAUq7a/S+y806/camtvxYi8mSpK+emGLr3tpwkCSpa3VXd2r19ZJ2D05y41bxe7jV80ttXWqGzRZNPEBOUsJR4LgLlh5ly4nyEKcqf4ZLDjDlZJPjd/S1vW3dgGPce2wwsC7utjXmdZ8euC+nrWstSVr9oZvZaPnaaluuO2+e+Rl4nor6WcXIMAAAACKLzjAAAAAii2USBWjwTWzaZaCr27efmTbccFe6q8yrqAP/JWf2PW0lSePrvhc6dvMlf7Ll9HkEIqF0VVm9zZa7Tj9fknRyqx/zO12S9MoHJsdm2xtcUCdTy3v23apmtlyttVn+MK/vY6HztvpurVTPaYNtuelD5jEtJ0cnwCtn2XJbHp3V1pbPWvmdJOmwyu7zolcjs9Rpp+/q4sFyM7LdWNV5H7v32C5/W2V+T0SDuPMT3Eb5ghvMUogxrdzyk3iwXJSWRuQnvs1y++FuSc+MwNjoqeoWeozjzsvQz5KkZrGfUsVdBrEnjAwDAAAgshgZLkCt1803+R6D3Gr8Lw56SZJ0+CVX2rp6T6R+CrHM1Zmhuq4PDZMkNZsUnVEfVACB3eaanG5+ztjD9/q2Sv3XaGlo9qB73XfabkZ8D24VGE1aYAKKa3/tUv81f4T3g0R6XmdGJjte62YxRrf4RNKuwXKdPxkiadddEbMmuSBuZjT2bHUPk06sjw6yde3FiDDyx8gwAAAAIovOMAAAACKLZRIFyNtu8pDW6Tff1vWV2WmpXsSmXdv8n/n3nvp/bmF9MzEdCqSytKnf2nL7qebnpsDxLK0VCmefF800/coXXd3J6ho6r52+DdUBKF2MDAMAACCy6AwDAAAgsugMAwAAILLoDAMAACCyPN/3y7sNAAAAQLlgZBgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkUVnGAAAAJFFZxgAAACRRWcYAAAAkfX/wbgOQxVsVcEAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x864 with 32 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "\n",
    "tf.logging.set_verbosity(tf.logging.INFO)\n",
    "plt.figure(figsize=(12,12))\n",
    "\n",
    "for idx in range(32):\n",
    "    plt.subplot(4,8,idx+1)\n",
    "    plt.axis('off')\n",
    "    plt.title('[{}]'.format(mnist2.train.labels[idx]))\n",
    "    plt.imshow(mnist.train.images[idx].reshape((28,28)))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "定义用于训练的网络，首先定义网络的输入\n",
    "为了让网络更高效的运行，多个数据会被组织成一个batch送入网络，两个placeholder的第一个维度就是batchsize，因为我们这里还没有确定batchsize，所以第一个维度留空。\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "#定义学习率\n",
    "learning_rate=tf.placeholder(tf.float32)\n",
    "#定义输入和输出\n",
    "x=tf.placeholder(tf.float32,[None,784],name='x')\n",
    "y=tf.placeholder(tf.float32,[None,10],name='y')\n",
    "#定义权重w和偏置b\n",
    "def initialize(shape,stddev=0.1):\n",
    "    return tf.truncated_normal(shape,stddev=0.1)\n",
    "L1_units_count = 10\n",
    "\n",
    "w=tf.Variable(initialize([784,L1_units_count]),name='weight')\n",
    "\n",
    "b=tf.Variable(tf.zeros([L1_units_count]), name='bias')\n",
    "\n",
    "logits=tf.matmul(x,w)+b\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "接下来定义loss和用于优化网络的优化器。loss计算使用了softmax_cross_entropy_with_logits"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "#交叉熵损失\n",
    "cross_entropy_loss = tf.reduce_mean(\n",
    "    tf.nn.softmax_cross_entropy_with_logits(logits=logits, labels=y))\n",
    "\n",
    "optimizer = tf.train.GradientDescentOptimizer(\n",
    "    learning_rate=learning_rate).minimize(cross_entropy_loss)\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "需要注意的是，上面的网络，最后输出的是未经softmax的原始logits，而不是概率分布， 要想看到概率分布，还需要做一下softmax。\n",
    "将输出的结果与正确结果进行对比，即可得到我们的网络输出结果的准确率。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "pred = tf.nn.softmax(logits)\n",
    "correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(logits, 1))\n",
    "accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "batch_size = 32\n",
    "trainig_step = 3000\n",
    "\n",
    "saver = tf.train.Saver()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.framework.ops.Graph at 0x22cb2397198>"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grap=tf.get_default_graph()\n",
    "grap"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "node {\n",
       "  name: \"Placeholder\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Placeholder_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.10000000149011612\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal/TruncatedNormal\"\n",
       "  input: \"truncated_normal/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal/mul\"\n",
       "  input: \"truncated_normal/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"truncated_normal\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"zeros\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul\"\n",
       "  input: \"bias/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  op: \"StopGradient\"\n",
       "  input: \"y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  input: \"Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients/Shape\"\n",
       "  input: \"gradients/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Fill\"\n",
       "  input: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients/Mean_grad/Reshape\"\n",
       "  input: \"gradients/Mean_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_1\"\n",
       "  input: \"gradients/Mean_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_2\"\n",
       "  input: \"gradients/Mean_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients/Mean_grad/Prod_1\"\n",
       "  input: \"gradients/Mean_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients/Mean_grad/Prod\"\n",
       "  input: \"gradients/Mean_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients/Mean_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients/Mean_grad/Tile\"\n",
       "  input: \"gradients/Mean_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Mean_grad/truediv\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum_1\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape_1\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight\"\n",
       "  input: \"Placeholder_1\"\n",
       "  input: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias\"\n",
       "  input: \"Placeholder_1\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"Softmax\"\n",
       "  input: \"ArgMax/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Placeholder_2\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.10000000149011612\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal_1/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal_1/TruncatedNormal\"\n",
       "  input: \"truncated_normal_1/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal_1/mul\"\n",
       "  input: \"truncated_normal_1/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"truncated_normal_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"zeros_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_1\"\n",
       "  input: \"weight_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add_1\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul_1\"\n",
       "  input: \"bias_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/labels_stop_gradient\"\n",
       "  op: \"StopGradient\"\n",
       "  input: \"y_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/labels_stop_gradient\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_1\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  input: \"Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients_1/Shape\"\n",
       "  input: \"gradients_1/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/Fill\"\n",
       "  input: \"gradients_1/Mean_1_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients_1/Mean_1_grad/Reshape\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape_1\"\n",
       "  input: \"gradients_1/Mean_1_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape_2\"\n",
       "  input: \"gradients_1/Mean_1_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients_1/Mean_1_grad/Prod_1\"\n",
       "  input: \"gradients_1/Mean_1_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients_1/Mean_1_grad/Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients_1/Mean_1_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients_1/Mean_1_grad/Tile\"\n",
       "  input: \"gradients_1/Mean_1_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/Mean_1_grad/truediv\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients_1/add_1_grad/Shape\"\n",
       "  input: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/Sum\"\n",
       "  input: \"gradients_1/add_1_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/Sum_1\"\n",
       "  input: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/add_1_grad/Reshape\"\n",
       "  input: \"^gradients_1/add_1_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/add_1_grad/Reshape\"\n",
       "  input: \"^gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/add_1_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/add_1_grad/Reshape_1\"\n",
       "  input: \"^gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/add_1_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  input: \"weight_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_1\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/MatMul\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/MatMul_1_grad/MatMul\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/MatMul_1_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1/update_weight_1/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"Placeholder_2\"\n",
       "  input: \"gradients_1/MatMul_1_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1/update_bias_1/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"Placeholder_2\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent_1/update_bias_1/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent_1/update_weight_1/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax_1\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"Softmax_1\"\n",
       "  input: \"ArgMax_1/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_1\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_1\"\n",
       "  input: \"y_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_1\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\000\\000\\000\\000\\001\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_2\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast\"\n",
       "  input: \"Const_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/filename/input\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "        }\n",
       "        string_val: \"model\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/filename\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save/filename/input\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Const\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save/filename\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2\"\n",
       "  op: \"SaveV2\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"save/SaveV2/tensor_names\"\n",
       "  input: \"save/SaveV2/shape_and_slices\"\n",
       "  input: \"bias\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"weight\"\n",
       "  input: \"weight_1\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"^save/SaveV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@save/Const\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2\"\n",
       "  op: \"RestoreV2\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"save/RestoreV2/tensor_names\"\n",
       "  input: \"save/RestoreV2/shape_and_slices\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"save/RestoreV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_1\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"save/RestoreV2:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_2\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"save/RestoreV2:2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_3\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"save/RestoreV2:3\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/restore_all\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^save/Assign\"\n",
       "  input: \"^save/Assign_1\"\n",
       "  input: \"^save/Assign_2\"\n",
       "  input: \"^save/Assign_3\"\n",
       "}\n",
       "versions {\n",
       "  producer: 27\n",
       "}"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grap.as_graph_def()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "以上定义的所有操作，均为计算图，也就是仅仅是定义了网络的结构，实际需要运行的话，还需要创建一个session，并将数据填入网络中。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step:[100]\n",
      "train_loss:[0.30525970458984375], train_acc[0.9375]\n",
      "  val_acc:[0.8763999938964844]\n",
      "###########################\n",
      "step:[200]\n",
      "train_loss:[0.36299726366996765], train_acc[1.0]\n",
      "  val_acc:[0.8889999985694885]\n",
      "###########################\n",
      "step:[300]\n",
      "train_loss:[0.3925914168357849], train_acc[0.96875]\n",
      "  val_acc:[0.9003999829292297]\n",
      "###########################\n",
      "step:[400]\n",
      "train_loss:[0.3849785625934601], train_acc[0.96875]\n",
      "  val_acc:[0.8939999938011169]\n",
      "###########################\n",
      "step:[500]\n",
      "train_loss:[1.0080771446228027], train_acc[0.90625]\n",
      "  val_acc:[0.8574000000953674]\n",
      "###########################\n",
      "step:[600]\n",
      "train_loss:[0.09463028609752655], train_acc[1.0]\n",
      "  val_acc:[0.9114000201225281]\n",
      "###########################\n",
      "WARNING:tensorflow:From d:\\Anaconda3\\lib\\site-packages\\tensorflow\\python\\training\\saver.py:966: remove_checkpoint (from tensorflow.python.training.checkpoint_management) is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Use standard file APIs to delete files with this prefix.\n",
      "step:[700]\n",
      "train_loss:[0.25592750310897827], train_acc[0.90625]\n",
      "  val_acc:[0.8938000202178955]\n",
      "###########################\n",
      "step:[800]\n",
      "train_loss:[0.7644834518432617], train_acc[0.9375]\n",
      "  val_acc:[0.8623999953269958]\n",
      "###########################\n",
      "step:[900]\n",
      "train_loss:[0.7548040747642517], train_acc[0.96875]\n",
      "  val_acc:[0.9074000120162964]\n",
      "###########################\n",
      "step:[1000]\n",
      "train_loss:[0.6495538353919983], train_acc[0.9375]\n",
      "  val_acc:[0.9052000045776367]\n",
      "###########################\n",
      "step:[1100]\n",
      "train_loss:[0.07769668102264404], train_acc[1.0]\n",
      "  val_acc:[0.9182000160217285]\n",
      "###########################\n",
      "step:[1200]\n",
      "train_loss:[0.5427740216255188], train_acc[0.90625]\n",
      "  val_acc:[0.9190000295639038]\n",
      "###########################\n",
      "step:[1300]\n",
      "train_loss:[0.17655357718467712], train_acc[0.9375]\n",
      "  val_acc:[0.9214000105857849]\n",
      "###########################\n",
      "step:[1400]\n",
      "train_loss:[0.04490947350859642], train_acc[1.0]\n",
      "  val_acc:[0.9243999719619751]\n",
      "###########################\n",
      "step:[1500]\n",
      "train_loss:[0.08120064437389374], train_acc[1.0]\n",
      "  val_acc:[0.9218000173568726]\n",
      "###########################\n",
      "step:[1600]\n",
      "train_loss:[0.09908434003591537], train_acc[1.0]\n",
      "  val_acc:[0.9161999821662903]\n",
      "###########################\n",
      "step:[1700]\n",
      "train_loss:[0.11520975828170776], train_acc[0.96875]\n",
      "  val_acc:[0.9190000295639038]\n",
      "###########################\n",
      "step:[1800]\n",
      "train_loss:[0.3862120807170868], train_acc[0.9375]\n",
      "  val_acc:[0.9211999773979187]\n",
      "###########################\n",
      "step:[1900]\n",
      "train_loss:[0.28697216510772705], train_acc[0.9375]\n",
      "  val_acc:[0.9233999848365784]\n",
      "###########################\n",
      "step:[2000]\n",
      "train_loss:[0.18145498633384705], train_acc[0.96875]\n",
      "  val_acc:[0.925000011920929]\n",
      "###########################\n",
      "step:[2100]\n",
      "train_loss:[0.15723490715026855], train_acc[0.96875]\n",
      "  val_acc:[0.9233999848365784]\n",
      "###########################\n",
      "step:[2200]\n",
      "train_loss:[0.1187436431646347], train_acc[0.96875]\n",
      "  val_acc:[0.9265999794006348]\n",
      "###########################\n",
      "step:[2300]\n",
      "train_loss:[0.10181602835655212], train_acc[0.96875]\n",
      "  val_acc:[0.9236000180244446]\n",
      "###########################\n",
      "step:[2400]\n",
      "train_loss:[0.08692818880081177], train_acc[1.0]\n",
      "  val_acc:[0.9236000180244446]\n",
      "###########################\n",
      "step:[2500]\n",
      "train_loss:[0.6183450222015381], train_acc[0.90625]\n",
      "  val_acc:[0.9259999990463257]\n",
      "###########################\n",
      "step:[2600]\n",
      "train_loss:[0.09956563264131546], train_acc[0.96875]\n",
      "  val_acc:[0.925599992275238]\n",
      "###########################\n",
      "step:[2700]\n",
      "train_loss:[0.07814262807369232], train_acc[0.96875]\n",
      "  val_acc:[0.925599992275238]\n",
      "###########################\n",
      "step:[2800]\n",
      "train_loss:[0.27283263206481934], train_acc[0.90625]\n",
      "  val_acc:[0.9261999726295471]\n",
      "###########################\n",
      "step:[2900]\n",
      "train_loss:[0.15984521806240082], train_acc[0.96875]\n",
      "  val_acc:[0.926800012588501]\n",
      "###########################\n",
      "step:[3000]\n",
      "train_loss:[0.2897578775882721], train_acc[0.9375]\n",
      "  val_acc:[0.9269999861717224]\n",
      "###########################\n",
      "the training is finish!\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "   #定义验证集与测试集\n",
    "    val_data = {\n",
    "        x: mnist.validation.images,\n",
    "        y: mnist.validation.labels,\n",
    "    }\n",
    "    test_data = {x: mnist.test.images, y: mnist.test.labels}\n",
    "    lr=1.0\n",
    "    for i in range(trainig_step):\n",
    "        if i > 1000:\n",
    "            lr = 0.3\n",
    "        if i > 2000:\n",
    "            lr = 0.1\n",
    "        x_train, y_train = mnist.train.next_batch(batch_size)\n",
    "        _, train_loss = sess.run(\n",
    "            [optimizer, cross_entropy_loss],\n",
    "            feed_dict={\n",
    "                x: x_train,\n",
    "                y: y_train,\n",
    "                learning_rate: lr\n",
    "            })\n",
    "\n",
    "        #每100次训练打印一次损失值与验证准确率\n",
    "        if i > 0 and (i+1) % 100 == 0:\n",
    "            val_accuracy = sess.run(accuracy, feed_dict=val_data)\n",
    "            train_acc=sess.run(accuracy,feed_dict={x: x_train, y: y_train})\n",
    "            \n",
    "            print('step:[{}]'.format(i+1))\n",
    "            print('train_loss:[{}], train_acc[{}]'.format(train_loss,train_acc))\n",
    "            print(\n",
    "                '  val_acc:[{}]'.format( val_accuracy))\n",
    "            print('###########################')\n",
    "            saver.save(sess, './model.ckpt', global_step=i)\n",
    "\n",
    "    print(\"the training is finish!\")\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "INFO:tensorflow:Restoring parameters from ./model.ckpt-2999\n",
      "0.9375\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 576x576 with 16 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "with tf.Session() as sess:\n",
    "    ckpt = tf.train.get_checkpoint_state('./')\n",
    "    if ckpt and ckpt.model_checkpoint_path:\n",
    "        saver.restore(sess, ckpt.model_checkpoint_path)\n",
    "        final_pred, acc = sess.run(\n",
    "            [pred, accuracy],\n",
    "            feed_dict={\n",
    "                x: mnist.test.images[:16],\n",
    "                y: mnist.test.labels[:16]\n",
    "            })\n",
    "        orders = np.argsort(final_pred)\n",
    "        plt.figure(figsize=(8, 8))\n",
    "        print(acc)\n",
    "        for idx in range(16):\n",
    "            order = orders[idx, :][-1]\n",
    "            prob = final_pred[idx, :][order]\n",
    "            plt.subplot(4, 4, idx + 1)\n",
    "            plt.axis('off')\n",
    "            plt.title('{}: [{}]-[{:.1f}%]'.format(mnist2.test.labels[idx],\n",
    "                                                  order, prob * 100))\n",
    "            plt.imshow(mnist2.test.images[idx].reshape((28, 28)))\n",
    "\n",
    "    else:\n",
    "        pass"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>模型结构"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）mnist手写字识别模型采用多元单层模型。从tensorflow的example中读入手写数字数据集，包含训练、验证和测试三部分数据。\n",
    " （2）定义用于训练的网络，定义网络的输入 为了让网络更高效的运行，多个数据会被组织成一个batch送入网络，mnist多分类问题采用softmax函数进行分类。\n",
    " 模型未添加非线性激活函数"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>模型训练过程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "模型训练通过梯度下降（gradient descent）来达到损失最小化。\n",
    "（1）将数据输入到神经网络中，前行传播，输入值加权累加得到未激活的输出logists\n",
    "（2）计算输出logists和标签交叉熵损失，通过损失值判断模型的性能（loss值越低越好）\n",
    "（3）通过反向传播计算梯度向量，通过梯度向量更新参数w和b，经过迭代训练，使模型损失不断下降，直至收敛。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h3>计算图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "计算图是Tensorflow的一个基本概念，Tensorflow中的所有计算都会被转化为计算图上的节点。\n",
    "基于TensorFlow这个编程系统中的每一个计算都是计算图上的一个节点，而节点与节点之间的连线则代表计算之间的依赖关系。\n",
    "代码中定义的权重weight，偏置b都是节点，如果一个计算的输入依赖于另一个计算的输出，即代表两个计算之间存在依赖关系。\n",
    "　Tensorflow是一个通过计算图的形式来表述计算的编程系统，计算图也叫数据流图，可以把计算图看做是一种有向图，Tensorflow中的每一个计算都是计算图上的一个节点，而节点之间的边描述了计算之间的依赖关系。在tensorflow程序中，系统会维护一个默认的计算图，通过tf.get_default_graph()函数可以获取当前默认的计算图。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "node {\n",
       "  name: \"Placeholder\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Placeholder_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.10000000149011612\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal/TruncatedNormal\"\n",
       "  input: \"truncated_normal/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal/mul\"\n",
       "  input: \"truncated_normal/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"truncated_normal\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"zeros\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul\"\n",
       "  input: \"bias/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  op: \"StopGradient\"\n",
       "  input: \"y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/labels_stop_gradient\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  input: \"Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients/Shape\"\n",
       "  input: \"gradients/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Fill\"\n",
       "  input: \"gradients/Mean_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients/Mean_grad/Reshape\"\n",
       "  input: \"gradients/Mean_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_1\"\n",
       "  input: \"gradients/Mean_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients/Mean_grad/Shape_2\"\n",
       "  input: \"gradients/Mean_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients/Mean_grad/Prod_1\"\n",
       "  input: \"gradients/Mean_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients/Mean_grad/Prod\"\n",
       "  input: \"gradients/Mean_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients/Mean_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/Mean_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients/Mean_grad/Tile\"\n",
       "  input: \"gradients/Mean_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/Mean_grad/truediv\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/ExpandDims_1\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_sg_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "  input: \"^gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/softmax_cross_entropy_with_logits_sg_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg_grad/tuple/control_dependency\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum\"\n",
       "  input: \"gradients/add_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients/softmax_cross_entropy_with_logits_sg/Reshape_grad/Reshape\"\n",
       "  input: \"gradients/add_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients/add_grad/Sum_1\"\n",
       "  input: \"gradients/add_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/add_grad/Reshape_1\"\n",
       "  input: \"^gradients/add_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/add_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  input: \"weight/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients/MatMul_grad/MatMul_1\"\n",
       "  input: \"^gradients/MatMul_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients/MatMul_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight\"\n",
       "  input: \"Placeholder_1\"\n",
       "  input: \"gradients/MatMul_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias\"\n",
       "  input: \"Placeholder_1\"\n",
       "  input: \"gradients/add_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent/update_bias/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent/update_weight/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"Softmax\"\n",
       "  input: \"ArgMax/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Placeholder_2\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y_1\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.10000000149011612\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal_1/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal_1/TruncatedNormal\"\n",
       "  input: \"truncated_normal_1/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_1\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal_1/mul\"\n",
       "  input: \"truncated_normal_1/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"truncated_normal_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_1/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"zeros_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_1/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_1\"\n",
       "  input: \"weight_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add_1\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul_1\"\n",
       "  input: \"bias_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/labels_stop_gradient\"\n",
       "  op: \"StopGradient\"\n",
       "  input: \"y_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/labels_stop_gradient\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Cast\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_1\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  input: \"Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients_1/Shape\"\n",
       "  input: \"gradients_1/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/Fill\"\n",
       "  input: \"gradients_1/Mean_1_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients_1/Mean_1_grad/Reshape\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape_1\"\n",
       "  input: \"gradients_1/Mean_1_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Shape_2\"\n",
       "  input: \"gradients_1/Mean_1_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients_1/Mean_1_grad/Prod_1\"\n",
       "  input: \"gradients_1/Mean_1_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients_1/Mean_1_grad/Prod\"\n",
       "  input: \"gradients_1/Mean_1_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients_1/Mean_1_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/Mean_1_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients_1/Mean_1_grad/Tile\"\n",
       "  input: \"gradients_1/Mean_1_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/Mean_1_grad/truediv\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_1/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/ExpandDims_1\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "  input: \"^gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1_grad/tuple/control_dependency\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients_1/add_1_grad/Shape\"\n",
       "  input: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/Sum\"\n",
       "  input: \"gradients_1/add_1_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_1/softmax_cross_entropy_with_logits_sg_1/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_1/add_1_grad/Sum_1\"\n",
       "  input: \"gradients_1/add_1_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/add_1_grad/Reshape\"\n",
       "  input: \"^gradients_1/add_1_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/add_1_grad/Reshape\"\n",
       "  input: \"^gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/add_1_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/add_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/add_1_grad/Reshape_1\"\n",
       "  input: \"^gradients_1/add_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/add_1_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  input: \"weight_1/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_1\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/MatMul\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/MatMul_1_grad/MatMul\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/MatMul_1_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_1/MatMul_1_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "  input: \"^gradients_1/MatMul_1_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_1/MatMul_1_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1/update_weight_1/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"Placeholder_2\"\n",
       "  input: \"gradients_1/MatMul_1_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1/update_bias_1/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"Placeholder_2\"\n",
       "  input: \"gradients_1/add_1_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_1\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent_1/update_bias_1/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent_1/update_weight_1/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax_1\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_1\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"Softmax_1\"\n",
       "  input: \"ArgMax_1/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_1\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_1\"\n",
       "  input: \"y_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_1\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\000\\000\\000\\000\\001\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_2\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast\"\n",
       "  input: \"Const_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/filename/input\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "        }\n",
       "        string_val: \"model\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/filename\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save/filename/input\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Const\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save/filename\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/SaveV2\"\n",
       "  op: \"SaveV2\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"save/SaveV2/tensor_names\"\n",
       "  input: \"save/SaveV2/shape_and_slices\"\n",
       "  input: \"bias\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"weight\"\n",
       "  input: \"weight_1\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"^save/SaveV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@save/Const\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 4\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/RestoreV2\"\n",
       "  op: \"RestoreV2\"\n",
       "  input: \"save/Const\"\n",
       "  input: \"save/RestoreV2/tensor_names\"\n",
       "  input: \"save/RestoreV2/shape_and_slices\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"save/RestoreV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_1\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"save/RestoreV2:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_2\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"save/RestoreV2:2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/Assign_3\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"save/RestoreV2:3\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save/restore_all\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^save/Assign\"\n",
       "  input: \"^save/Assign_1\"\n",
       "  input: \"^save/Assign_2\"\n",
       "  input: \"^save/Assign_3\"\n",
       "}\n",
       "node {\n",
       "  name: \"init\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_1\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_2\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"Placeholder_3\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        unknown_rank: true\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"x_2\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"y_2\"\n",
       "  op: \"Placeholder\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: -1\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 2\n",
       "          }\n",
       "        }\n",
       "        tensor_content: \"\\020\\003\\000\\000\\n\\000\\000\\000\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2/mean\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2/stddev\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 0.10000000149011612\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2/TruncatedNormal\"\n",
       "  op: \"TruncatedNormal\"\n",
       "  input: \"truncated_normal_2/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"seed2\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"truncated_normal_2/TruncatedNormal\"\n",
       "  input: \"truncated_normal_2/stddev\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"truncated_normal_2\"\n",
       "  op: \"Add\"\n",
       "  input: \"truncated_normal_2/mul\"\n",
       "  input: \"truncated_normal_2/mean\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_2\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 784\n",
       "        }\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_2/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_2\"\n",
       "  input: \"truncated_normal_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"weight_2/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"weight_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"zeros_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 10\n",
       "          }\n",
       "        }\n",
       "        float_val: 0.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_2\"\n",
       "  op: \"VariableV2\"\n",
       "  attr {\n",
       "    key: \"container\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "        dim {\n",
       "          size: 10\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shared_name\"\n",
       "    value {\n",
       "      s: \"\"\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_2/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_2\"\n",
       "  input: \"zeros_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"bias_2/read\"\n",
       "  op: \"Identity\"\n",
       "  input: \"bias_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"MatMul_2\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_2\"\n",
       "  input: \"weight_2/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"add_2\"\n",
       "  op: \"Add\"\n",
       "  input: \"MatMul_2\"\n",
       "  input: \"bias_2/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/labels_stop_gradient\"\n",
       "  op: \"StopGradient\"\n",
       "  input: \"y_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Rank\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Rank_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Rank_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Shape_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"add_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Rank_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 2\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Shape_2\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/labels_stop_gradient\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub_1/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub_1\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Rank_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub_1/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_1/begin\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub_1\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_1/size\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_1\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Shape_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_1/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_1/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat_1/values_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat_1/axis\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/concat_1\"\n",
       "  op: \"ConcatV2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat_1/values_0\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_1\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat_1/axis\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 2\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/labels_stop_gradient\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/concat_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2\"\n",
       "  op: \"SoftmaxCrossEntropyWithLogits\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub_2/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Sub_2\"\n",
       "  op: \"Sub\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Rank\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub_2/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_2/begin\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_2/size\"\n",
       "  op: \"Pack\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Sub_2\"\n",
       "  attr {\n",
       "    key: \"N\"\n",
       "    value {\n",
       "      i: 1\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"axis\"\n",
       "    value {\n",
       "      i: 0\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Slice_2\"\n",
       "  op: \"Slice\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_2/begin\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_2/size\"\n",
       "  attr {\n",
       "    key: \"Index\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"softmax_cross_entropy_with_logits_sg_2/Reshape_2\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Slice_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_3\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_3\"\n",
       "  op: \"Mean\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape_2\"\n",
       "  input: \"Const_3\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/grad_ys_0\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_FLOAT\n",
       "        tensor_shape {\n",
       "        }\n",
       "        float_val: 1.0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Fill\"\n",
       "  op: \"Fill\"\n",
       "  input: \"gradients_2/Shape\"\n",
       "  input: \"gradients_2/grad_ys_0\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"index_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Reshape/shape\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_2/Fill\"\n",
       "  input: \"gradients_2/Mean_3_grad/Reshape/shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Tile\"\n",
       "  op: \"Tile\"\n",
       "  input: \"gradients_2/Mean_3_grad/Reshape\"\n",
       "  input: \"gradients_2/Mean_3_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tmultiples\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Shape_1\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Shape_2\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "          }\n",
       "        }\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Const\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Prod\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_2/Mean_3_grad/Shape_1\"\n",
       "  input: \"gradients_2/Mean_3_grad/Const\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Const_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Prod_1\"\n",
       "  op: \"Prod\"\n",
       "  input: \"gradients_2/Mean_3_grad/Shape_2\"\n",
       "  input: \"gradients_2/Mean_3_grad/Const_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Maximum/y\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Maximum\"\n",
       "  op: \"Maximum\"\n",
       "  input: \"gradients_2/Mean_3_grad/Prod_1\"\n",
       "  input: \"gradients_2/Mean_3_grad/Maximum/y\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/floordiv\"\n",
       "  op: \"FloorDiv\"\n",
       "  input: \"gradients_2/Mean_3_grad/Prod\"\n",
       "  input: \"gradients_2/Mean_3_grad/Maximum\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/Cast\"\n",
       "  op: \"Cast\"\n",
       "  input: \"gradients_2/Mean_3_grad/floordiv\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/Mean_3_grad/truediv\"\n",
       "  op: \"RealDiv\"\n",
       "  input: \"gradients_2/Mean_3_grad/Tile\"\n",
       "  input: \"gradients_2/Mean_3_grad/Cast\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_2/Mean_3_grad/truediv\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/zeros_like\"\n",
       "  op: \"ZerosLike\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/LogSoftmax\"\n",
       "  op: \"LogSoftmax\"\n",
       "  input: \"softmax_cross_entropy_with_logits_sg_2/Reshape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/Neg\"\n",
       "  op: \"Neg\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/LogSoftmax\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims_1/dim\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: -1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims_1\"\n",
       "  op: \"ExpandDims\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_2_grad/Reshape\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims_1/dim\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tdim\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul_1\"\n",
       "  op: \"Mul\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/ExpandDims_1\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/Neg\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul\"\n",
       "  input: \"^gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul\"\n",
       "  input: \"^gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul_1\"\n",
       "  input: \"^gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/mul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2_grad/tuple/control_dependency\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Shape\"\n",
       "  op: \"Shape\"\n",
       "  input: \"MatMul_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"out_type\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Shape_1\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 10\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/BroadcastGradientArgs\"\n",
       "  op: \"BroadcastGradientArgs\"\n",
       "  input: \"gradients_2/add_2_grad/Shape\"\n",
       "  input: \"gradients_2/add_2_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Sum\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_2/add_2_grad/BroadcastGradientArgs\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Reshape\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_2/add_2_grad/Sum\"\n",
       "  input: \"gradients_2/add_2_grad/Shape\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Sum_1\"\n",
       "  op: \"Sum\"\n",
       "  input: \"gradients_2/softmax_cross_entropy_with_logits_sg_2/Reshape_grad/Reshape\"\n",
       "  input: \"gradients_2/add_2_grad/BroadcastGradientArgs:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/Reshape_1\"\n",
       "  op: \"Reshape\"\n",
       "  input: \"gradients_2/add_2_grad/Sum_1\"\n",
       "  input: \"gradients_2/add_2_grad/Shape_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tshape\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_2/add_2_grad/Reshape\"\n",
       "  input: \"^gradients_2/add_2_grad/Reshape_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/add_2_grad/Reshape\"\n",
       "  input: \"^gradients_2/add_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/add_2_grad/Reshape\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/add_2_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/add_2_grad/Reshape_1\"\n",
       "  input: \"^gradients_2/add_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/add_2_grad/Reshape_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/MatMul_2_grad/MatMul\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"gradients_2/add_2_grad/tuple/control_dependency\"\n",
       "  input: \"weight_2/read\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/MatMul_2_grad/MatMul_1\"\n",
       "  op: \"MatMul\"\n",
       "  input: \"x_2\"\n",
       "  input: \"gradients_2/add_2_grad/tuple/control_dependency\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_a\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"transpose_b\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/MatMul_2_grad/tuple/group_deps\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^gradients_2/MatMul_2_grad/MatMul\"\n",
       "  input: \"^gradients_2/MatMul_2_grad/MatMul_1\"\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/MatMul_2_grad/tuple/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/MatMul_2_grad/MatMul\"\n",
       "  input: \"^gradients_2/MatMul_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/MatMul_2_grad/MatMul\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"gradients_2/MatMul_2_grad/tuple/control_dependency_1\"\n",
       "  op: \"Identity\"\n",
       "  input: \"gradients_2/MatMul_2_grad/MatMul_1\"\n",
       "  input: \"^gradients_2/MatMul_2_grad/tuple/group_deps\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@gradients_2/MatMul_2_grad/MatMul_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_2/update_weight_2/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"weight_2\"\n",
       "  input: \"Placeholder_3\"\n",
       "  input: \"gradients_2/MatMul_2_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_2/update_bias_2/ApplyGradientDescent\"\n",
       "  op: \"ApplyGradientDescent\"\n",
       "  input: \"bias_2\"\n",
       "  input: \"Placeholder_3\"\n",
       "  input: \"gradients_2/add_2_grad/tuple/control_dependency_1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"GradientDescent_2\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^GradientDescent_2/update_bias_2/ApplyGradientDescent\"\n",
       "  input: \"^GradientDescent_2/update_weight_2/ApplyGradientDescent\"\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_2/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_2\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"y_2\"\n",
       "  input: \"ArgMax_2/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_3/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_3\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"add_2\"\n",
       "  input: \"ArgMax_3/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_2\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_2\"\n",
       "  input: \"ArgMax_3\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast_1\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_2\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_4\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_4\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast_1\"\n",
       "  input: \"Const_4\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_4/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_4\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"y_2\"\n",
       "  input: \"ArgMax_4/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_5/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_5\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"add_2\"\n",
       "  input: \"ArgMax_5/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_3\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_4\"\n",
       "  input: \"ArgMax_5\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast_2\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_3\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_5\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_5\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast_2\"\n",
       "  input: \"Const_5\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/filename/input\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "        }\n",
       "        string_val: \"model\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/filename\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save_1/filename/input\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Const\"\n",
       "  op: \"PlaceholderWithDefault\"\n",
       "  input: \"save_1/filename\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"shape\"\n",
       "    value {\n",
       "      shape {\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/SaveV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 6\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"bias_2\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "        string_val: \"weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/SaveV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 6\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/SaveV2\"\n",
       "  op: \"SaveV2\"\n",
       "  input: \"save_1/Const\"\n",
       "  input: \"save_1/SaveV2/tensor_names\"\n",
       "  input: \"save_1/SaveV2/shape_and_slices\"\n",
       "  input: \"bias\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"bias_2\"\n",
       "  input: \"weight\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"weight_2\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/control_dependency\"\n",
       "  op: \"Identity\"\n",
       "  input: \"save_1/Const\"\n",
       "  input: \"^save_1/SaveV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@save_1/Const\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/RestoreV2/tensor_names\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 6\n",
       "          }\n",
       "        }\n",
       "        string_val: \"bias\"\n",
       "        string_val: \"bias_1\"\n",
       "        string_val: \"bias_2\"\n",
       "        string_val: \"weight\"\n",
       "        string_val: \"weight_1\"\n",
       "        string_val: \"weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/RestoreV2/shape_and_slices\"\n",
       "  op: \"Const\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_STRING\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_STRING\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 6\n",
       "          }\n",
       "        }\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "        string_val: \"\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/RestoreV2\"\n",
       "  op: \"RestoreV2\"\n",
       "  input: \"save_1/Const\"\n",
       "  input: \"save_1/RestoreV2/tensor_names\"\n",
       "  input: \"save_1/RestoreV2/shape_and_slices\"\n",
       "  device: \"/device:CPU:0\"\n",
       "  attr {\n",
       "    key: \"dtypes\"\n",
       "    value {\n",
       "      list {\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "        type: DT_FLOAT\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias\"\n",
       "  input: \"save_1/RestoreV2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign_1\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_1\"\n",
       "  input: \"save_1/RestoreV2:1\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign_2\"\n",
       "  op: \"Assign\"\n",
       "  input: \"bias_2\"\n",
       "  input: \"save_1/RestoreV2:2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@bias_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign_3\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight\"\n",
       "  input: \"save_1/RestoreV2:3\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign_4\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_1\"\n",
       "  input: \"save_1/RestoreV2:4\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_1\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/Assign_5\"\n",
       "  op: \"Assign\"\n",
       "  input: \"weight_2\"\n",
       "  input: \"save_1/RestoreV2:5\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"_class\"\n",
       "    value {\n",
       "      list {\n",
       "        s: \"loc:@weight_2\"\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"use_locking\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"validate_shape\"\n",
       "    value {\n",
       "      b: true\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"save_1/restore_all\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^save_1/Assign\"\n",
       "  input: \"^save_1/Assign_1\"\n",
       "  input: \"^save_1/Assign_2\"\n",
       "  input: \"^save_1/Assign_3\"\n",
       "  input: \"^save_1/Assign_4\"\n",
       "  input: \"^save_1/Assign_5\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_3\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_4\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_5\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_6\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_7\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"init_8\"\n",
       "  op: \"NoOp\"\n",
       "  input: \"^bias/Assign\"\n",
       "  input: \"^bias_1/Assign\"\n",
       "  input: \"^bias_2/Assign\"\n",
       "  input: \"^weight/Assign\"\n",
       "  input: \"^weight_1/Assign\"\n",
       "  input: \"^weight_2/Assign\"\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax_2\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_6/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_6\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"y_2\"\n",
       "  input: \"ArgMax_6/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_7/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_7\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"add_2\"\n",
       "  input: \"ArgMax_7/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_4\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_6\"\n",
       "  input: \"ArgMax_7\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast_3\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_4\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_6\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_6\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast_3\"\n",
       "  input: \"Const_6\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax_3\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_8/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_8\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"Softmax_3\"\n",
       "  input: \"ArgMax_8/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Softmax_4\"\n",
       "  op: \"Softmax\"\n",
       "  input: \"add_2\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_9/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_9\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"y_2\"\n",
       "  input: \"ArgMax_9/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_10/dimension\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "        }\n",
       "        int_val: 1\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"ArgMax_10\"\n",
       "  op: \"ArgMax\"\n",
       "  input: \"add_2\"\n",
       "  input: \"ArgMax_10/dimension\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"output_type\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Equal_6\"\n",
       "  op: \"Equal\"\n",
       "  input: \"ArgMax_9\"\n",
       "  input: \"ArgMax_10\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_INT64\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Cast_4\"\n",
       "  op: \"Cast\"\n",
       "  input: \"Equal_6\"\n",
       "  attr {\n",
       "    key: \"DstT\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"SrcT\"\n",
       "    value {\n",
       "      type: DT_BOOL\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Truncate\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Const_7\"\n",
       "  op: \"Const\"\n",
       "  attr {\n",
       "    key: \"dtype\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"value\"\n",
       "    value {\n",
       "      tensor {\n",
       "        dtype: DT_INT32\n",
       "        tensor_shape {\n",
       "          dim {\n",
       "            size: 1\n",
       "          }\n",
       "        }\n",
       "        int_val: 0\n",
       "      }\n",
       "    }\n",
       "  }\n",
       "}\n",
       "node {\n",
       "  name: \"Mean_7\"\n",
       "  op: \"Mean\"\n",
       "  input: \"Cast_4\"\n",
       "  input: \"Const_7\"\n",
       "  attr {\n",
       "    key: \"T\"\n",
       "    value {\n",
       "      type: DT_FLOAT\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"Tidx\"\n",
       "    value {\n",
       "      type: DT_INT32\n",
       "    }\n",
       "  }\n",
       "  attr {\n",
       "    key: \"keep_dims\"\n",
       "    value {\n",
       "      b: false\n",
       "    }\n",
       "  }\n",
       "}\n",
       "versions {\n",
       "  producer: 27\n",
       "}"
      ]
     },
     "execution_count": 57,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "grap.as_graph_def()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h2>模型调优"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "（1）一方面是由于首次训练时学习率是恒定的，并且学习率设置为1.0的时候，学习率过大会导致学习不稳定，所以学习率的设置采用逐渐衰减的方法。\n",
    "（2）训练迭代次数对模型的性能也有很大的影响，训练次数过小，模型可能存在未完全提取数据特征导致模型性能不高。\n",
    "（3）采用的单层网络结构进行训练，其特点是简单易用但是拟合能力不强，而深度神经网络在线性模型的基础上引入隐藏层，并增加非线性激活函数，使得拟合复杂函数的能力大大增强。"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
